MessagePack serializer and change to gorilla/websocket

[gorilla's websocket library](https://github.com/gorilla/websocket) seems nicer than the one in go.net, mostly because:

* easier to differentiate between binary and text frames
* works with autobahn test suite
* seems more actively maintained

The `msgpack` support is kind of gross, and I had to do some hackery to get an unmarshal working, and there are probably bugs with other message formats since only the HELLO message is tested. The current test passes, so there's that.

After writing this, I feel that the `Serializer` interface should be changed to be streaming instead. I'll open another issue so that can be discussed elsewhere.