Refactor kernel managers in preparation for the EmbeddedKernel.
Add purging of client result cache to parallel.Client

The new methods clear the cached values and free some memory.

The whole thing is split into different methods to both clear the
client and the hub side.

Additionally fix some bugs in other parts of the code.
Add Testcases for new purging methods in parallel.Client

Signed-off-by: Jan Schulz <jasc@gmx.net>
Implement EmbeddedKernel.
Optimise a check for empty jobs/target lists

If the inputs are empty, no msg_ids should be returned. So change the
test to not only check for None but also for empty lists.

Signed-off-by: Jan Schulz <jasc@gmx.net>
Add abstract base class (ABC) for sockets used in kernel.
BUG: QtKernelManagerMixin does not define PyQt4-safe signals.
DOC: Add an example showing off the embedded Qt console.
REFACTOR: Terminology change: 'embedded' -> 'in-process'.
DOC: Add module-level docstring to in-process kernel example.
DOC: Add information about in-process kernels to What's New.
BUG: GUI integration broken in the in-process kernel.
TST: Add some unit tests for in-process kernel and kernel manager.
TST: Add more unit tests for in-process kernel manager.
BUG: raw_input logic incorrect for in-process terminal frontend.
Ensure that in-process test group doesn't create global IPython singleton.

Since the in-process group makes its own shells, it should avoid
creating the global singleton.
TST: Skip pylab test for in-process kernel when matplotlib is missing.
Document how test_message_spec works
Add version_request/reply messaging protocol
Add a test for version_request in test_message_spec.py