Add a websocket signaling server impl

PTAL
(Sorry for the previous abandoned requests. I'm new to the github work flow and messed up the repository)
Again, we should avoid iterating over all the rooms.  Why does the caller not have the IDs?  If we really can't get around it, we should keep a ws => *client map.