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
This is the instance, not the module, so require doesn't solve it. We need an effectively-global reference to the list of available kernelspecs, and at the moment, attaching instances to the IPython namespace is how we seem to handle things that are effectively global. Is there something I should be doing instead, short of refactoring all the JS?