Widget Messaging Protocol (IPEP 21)

This implements [IPEP 21: Widget Messaging](https://github.com/ipython/ipython/wiki/IPEP-21:-Widget-Messages).
Relevant: https://github.com/JuliaLang/IJulia.jl/blob/master/src/execute_request.jl#L102
We should be using a single session id for an entire session, but this is not done anywhere if I am right.