Allow to set the response handler after the request is created

Signed-off-by: Julien Viet <julien@julienviet.com>
Allow to set the write stream handler after end() is called

Signed-off-by: Julien Viet <julien@julienviet.com>
Test the client request exception handler is called when we face a connection failure

Signed-off-by: Julien Viet <julien@julienviet.com>
Setting the response handler should always be done before connecting

Signed-off-by: Julien Viet <julien@julienviet.com>
Implement a WebsocketStream for client web sockets

Signed-off-by: Julien Viet <julien@julienviet.com>
Make sure the WebSocketStream is properly synchronized

Signed-off-by: Julien Viet <julien@julienviet.com>