WCF (Websocket Communication Foundation) - a skeleton for websocket transport

I like the idea of having a class designed to proxy all the transport callbacks. This should make it possible to reliably turn off all the callbacks such that if the transport misbehaves and continues invoking callbacks after the connection has stopped of fallen back to another transport it won't cause issues like we've seen in the past on the C# client. Obviously, we should try our best to ensure that the transport doesn't call into the proxy if it has been stopped. We could even add asserts inside the proxy to verify that it isn't called into after it has been turned off.

I don't think that things just work with utf8 and std::string [1]. But if you don't treat std::string as anything much more sophisticated than char array (in the C++ sense of char which would be byte in C#), then I'm sure it's fine. I think we should definitely test payloads with multi-byte utf8 characters when the time comes.

[1] http://stackoverflow.com/questions/3011082/c-stdstring-and-utf-8