Initial web socket API.

This PR is to a `websocket` feature branch for later merging into `master`.
`Callback` is good. or `WebSocketHandler`. Callback seems more 2014.