Support binary WebSocket in the WebGL backend

The goal is to transfer NumPy arrays more efficiently from Python to the browser (only `DATA` GLIR commands). This is only possible in IPython >= 3.0dev ([link to the IPython PR](https://github.com/ipython/ipython/pull/6110)).

Still WIP, not ready for review.

* [x] Refactor serialization logic in a new module in `util`.
* [ ] Use Comm send method to send binary buffers.
* [ ] Implement binary WebSocket by default unless IPython < 3.0, in which case fallback to base64.
* [ ] Test.