Websockets!

Hidden from the public, but usable via `WebSocket.newWebSocket(OkHttpClient, Request)` for now.
Added synchronization around attempting to close the connection from either the reader or writer.