Implement room-manager with split unhangout-server

Full implementation of RoomManager for handling socket traffic.  Biggest
changes are the removal of all socket-oriented code from server-models,
in favor of the separate RoomManager class handling socket routing and
broadcasts.  For the few cases where it is necessary for an Event model
to initiate a broadcast (for example when a non-socket HTTP method
changes an event, but this state change needs to propagate to connected
sockets) the Event model will fire a "broadcast" event, which the
RoomManager handles.

User models no longer have a single socket or single event they are part
of -- this should make it possible for users to have multiple sockets
(e.g. multiple tabs) and to simultaneously be in multiple events with no
problems.  As a result, all event-oriented socket messages now require a
``roomId`` parameter which indicates which event they are addressing
(previously, the "current event" was assumed to be the single one set on
the ServerUser model when the user joined an event).