Bidir comms with notebook

At last something works!

* Uses Modified ocaml-zmq to allow set_identity on Dealer/Sub sockets
* Sets a few required zmq socket options
* websocket+zmq messages are different formats, so convert them

Et-voila, the notebook can run an execute_request and display the
results.