Support binary
Do we really need this 'optimization'?
Close if missing expected continuation frame

NEEDS TESTS AND OTHER DRAFTS
Validated that control frames are not fragmented
Fail the WebSocket connection on protocol error

This is correct according to the spec for invalid UTF-8 errors. The spec isn't clear for other errors (e.g. receiving a message which is too large), but failing the connection seems appropriate.

Specifically this means that we send the close code and then _close the tcp connection_. Previously there was a bug where the input stream would not be processed and therefore a close handshake ack would not be processed, leaving the connection open.

Also refactored this logic into handler