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.
log user tracebacks in the kernel (INFO-level)
try to fallback to pysqlite2.dbapi2 as sqlite3

for situations where Python is built without sqlite3 and
can not easily be changed, it would be nice to still be
able to get history with pysqlite2.
BUG: Logging a rare error condition would have failed.