Enable the IPython Notebook to display messages from other clients.

This feature was discussed in https://github.com/ipython/ipython/pull/6123, but it doesn't look like anything was ever incorporated into the IPython Notebook.

Here's a brief overview of the changes:
- Display can be toggled on and off using <M-m>e in the web UI, or through the "Kernel" menu.
- notebook.js controls whether messages are displayed through a callback that is invoked from kernel.js when no callbacks are associated with a particular message.
- The UI displays messages that came from an external client in new cells at the end of the notebook. Output will only be displayed if a cell exists with a matching message ID.
- The notification area is used to indicate whether messages from other clients will be displayed or not.