Widget Messaging Protocol (IPEP 21)

This implements [IPEP 21: Widget Messaging](https://github.com/ipython/ipython/wiki/IPEP-21:-Widget-Messages).
I am working on this. Would
```on_msg::Union(Nothing, Function)
on_close::Union(Nothing, Function)```
be better? could initialize them with `nothing`. How about `Vector{Function}`?