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
Actually, this class already uses require to load CodeCell, instead of `IPython.CodeCell`, you should use `codecell.CodeCell`.