Allow caller of MultiKernelManager.start_kernel to pass kernel_id.
General cleanup of kernelmanger.MultiKernelManager.
Removing return value of restart_kernel.

The kernel_id is *always* the same under a restart and there
is no need to return it. The restart handler does pass
the original kernel_id back to the browser as it currently uses it.
Creating application.config attribute.

This creates less coupling between the handlers and the outer
IPython application.
Refactoring kernel_died method to make subclass friendly.
Adding tested ipc support to MultiKernelManager.
Fixing bug in connection file cleanup.

ipc files were not always being removed.
Adding calls to shell_channel.stop() to shutdown.

But this hangs the test suite for IPython.frontend.html.notebook.
Fixing bug in cleanup of ipc files and adding new to shutdown.

* ipc files were not being cleanup on a restart.
* shutdown has a now argument that will call kill directly.
Cleanup naming and organization of channels.

* Change remaining use of "sub" to "iopub".
* Use consistent naming of channel classes across zmq, inprocess
  and qt.
* Move BlockingChannelMixin to zmq.blockingkernelmanager.