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
> Session is an API thing, it shouldn't know about UI.

Referencing it in the global IPython namespace instead of passing in to the constructor isn't any better, but it looks like you've figured out a better solution with events.