refactoring internal architecture improving code

We will move the old "WebSocket" to "WebSocketStream" and remove its control
frame handling. As replacement we build a new "WebSocket" which does control
frame handling and provides some high-level api. With this new approach the
"WebSocketStream" really only parses and writes frame without any logic which
decides what to do. The new architecture is much smarter and decouples things a
lot.