Exec websocket

Here's some commits that use websockets to do the shell instead of direct sockets. I've left the 'shell' command for now since it still does bash a bit better than exec. When I fix those, I'll delete the shell command.

Right now there is no muxing of stdout/stderr (I didn't see how to get it out of the pty library, although I didn't look very hard). I'll look into that as well.
Alright, then a single websocket sounds fine.

One thing we'll have to think about when we do migration and start from remote snapshot/images is that we'll need to support both:
 - Give me a websocket I can send data to
 - Connect to that existing websocket and get the data from it

We need both and a way to detect failure and fallback to achieve the direct connection between two servers and fallback to proxying through the client on failure.

For direct connection, the client will ask one server to setup a websocket for the data transfer and then the second server to connect to it.

For a proxy connection, the client will ask one server to setup a websocket for the data transfer, then ask the second server to setup a websocket to receive the data and it will then connect to both and relay the data between the two.