Exception refactoring

WebSocketException now has getCloseReason() and can be thrown during runtime - after handshake is done.
HandshakeException now has getHttpStatusCode() and it can be thrown only during handshake phase.