IPEP 12: add KernelClient

This is the big first step in IPEP 12: splitting the two roles of KernelManager into two objects - exactly one KernelManager, which starts/stops/restarts kernels, and zero-to-many KernelClients, which perform actions via channels.

- [x] add KernelClient, split KernelManager
- [x] reorganize IPython.kernel module layout to reduce redundancy
- [x] update zmq console to new KM + KC API
- [x] update qt console to new KM + KC API
- [x] update existing tests
- [x] add new tests
- [x] expose shell_channel.method as KC.method
- [x] cleanup assumptions and boundaries among MultiKernelManager / MappingKernelManager
- [x] update inprocess cases to new API
- [x] add inprocess examples
- [x] add Control channel to get back clean kernel shutdown / restart
- [x] finish autorestart logic in notebook
- [x] hook up autorestart in qtconsole

I have not enabled autorestart in the plain terminal console, I am not sure that I should, since there is no background eventloop, unlike the qtconsole and notebook.

IPEP12-related changes that are not part of this PR:

- base Channels should *not* be threads
- `ipython kernel` entrypoint should operate via a KernelManager
- `ipengine` should use KernelManagers