Ensure that we don't damage the __builtins__ object after %run.
This fixes lp:364853.
Also added a standalone set of testing.tools utilities that can be used in
place of nose.tools to get proper test generators in object oriented tests.
Add tests to ensure that %run does not modify __builtins__
I will open a ticket for this, the current code only has the failing tests,
I still need to find a fix.
Initial refactor of task dependency system.
We are thinking about refactoring the task dependency system. Currently
is is based on engine properties and a function sent with each task.
In this commit, I have added a TaskRejectError that tasks can raise to
indicate that the engine doesn't have the required dependencies. For
now I have not removed any of the old stuff, but I have added warnings
that we might remove the older *_prop* methods in IMultiEngine.
See this ticket for more info: https://bugs.launchpad.net/bugs/361419
Merged Gael's ipython-sync-frontend branch with important mods.
This branch showed conflicts with recent changes I made to:
IPython.kernel.core.interpreter
IPython.kernel.core.tests.test_interpreter
I resolved these conflicts and closed a ticket that Gael fixed in his
branch. BUT, there is a related ticket that I opened. Furthermore,
Gael was using nose in test_interpreter, but we need to keep things in
IPython.kernel free of nose!