Secure room

Implements secure rooms feature. A few parts are nice, the rest are super hacky.

The first client to connect to a room URL gets to configure it. If a 'password' parameter is provided in the request, that password is set in the room - until server restart.

After that, socket.io connections are rejected unless the same password is provided in the connect method.