Copying the event handlers on reconnection

also maintaining the uri and protocol across reconnects.

The issue is that once you call WebSocket.new() you lose all the event handlers on your socket.