Widget Messaging Protocol (IPEP 21)

This implements [IPEP 21: Widget Messaging](https://github.com/ipython/ipython/wiki/IPEP-21:-Widget-Messages).
After the first `execute_request` is received, `execute_msg` is initialized and has whatever Session ID IPython sends it.