IPEP 12: add KernelClient

Still a fair amount to do, but the basic notebook / console / qtconsole are working.

- [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
- [ ] update inprocess cases to new API
- [ ] update existing tests
- [ ] add new tests
- [ ] expose shell_channel.method as KC.method
- [ ] Base Channels should not be Thread subclasses
- [ ] add Control channel to get back clean kernel shutdown / restart
- [ ] finish autorestart logic in notebook
- [ ] hook up new restart / hb logic in console / qtconsole