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)
OK.  I think I get it.  First, it removes messages for the client *other* than the one specified.  That's kind of strange.  If we want messaged *from* a particular client, why are we cache them according to the client they are intended *for* and then asking or the message *not for* that other client.  Why not just store them according to the client they are from in the first place?

And even if we keep it this way, I think we should separate the first step ("remove and return the messages") from the second ("send the messages to the websocket).  That way, the cache data structure doesn't need to know anything about websockets.