UI for changing kernels in the notebook

![screenshot from 2014-07-12 16 17 31](https://cloud.githubusercontent.com/assets/327925/3562815/06a722ae-0a0a-11e4-93ee-02865c9145bb.png)

When you change the kernel, the old kernel is killed, and a new one created according to your selection.

Further plans, either for this PR or a subsequent one:

- Embed kernel spec info in the notebook, and refer to that when loading a notebook
- Change syntax highlighting according to the kernel selection
- Use icons as well as names for kernels
- Make ordering of kernels in the list deterministic
There shouldn't be any global instances used internally, with the exception of Events.  The global instances are provided as a convenience.  The instance should be passed into the constructor of the Session object via an `options` dict.