Refactor web app room logic into separate service.

Contains the following major changes:
  * Export connector, api, and webrtc mediastream objects as angular services.
  * Export url formatter as a separate angular service.
  * Move `authorizing` flag to a function on the root scope.
  * Use directive to set the page title.
  * Move buddy list visibility toggling into the  buddy list directive.
  * Room information is no longer exposed on the root scope.
  * Use room.joined and room.left events instead of room.
  * Treat rooms as an object identified by name, rather than a string id.
  * Remove the following unused or semantically ambiguous events from the
    connector: opened, helloed, closed
  * Centralize all room state in an angular service.
  * Move call to hello from connector to api.
Major refactoring of server side code to allow isolated unit tests.

In addition to adding unit tests for the "Hello" message,
the following notable improvements are included:
 * Separate websocket callbacks from the hub via a handler API
   and adaptor.
 * Move all application specific state to the session.
 * Session no longer refers to the hub.
 * Remove redundant MessageRequest struct.
 * Hub is no longer responsible for buffer pool or
   buddy image management.
 * Consolidated connection table locking in the hub.
 * Remove redundant session table from the hub.
 * Split room join and leave into separate handlers.
   This also removes the RoomConnectionUpdate struct.
 * Entirely remove room management from the hub.
   This also provides room operations with a separate mutex.
 * Split stats into a separate service.
 * Simplify the session token handler.
 * Buddy image HTTP handler no longer takes the entire hub.
 * Centralize JSON encoding and decoding. This removes JSON
   encoding from the room worker queue.
 * Improve unicast message statistics.
 * Numerous other renamings and cleanup items.
Add server support for responding with Welcome to a Hello.
Send Hello with Iid from Javascript client, and use the data from the Welcome.
Add Room document and send it back in response to room joins.
Use room document from Welcome rather than synthesizing a response.
Support receiving and broadcasting room update events.
Support handling room updates in web client.
Add support for PIN locking rooms to the server.
Add basic support for pin locked rooms to the web application.
Merge pull request #130 from deathwish/support-room-pin

* support-room-pin:
  Add basic support for pin locked rooms to the web application.
  Add support for PIN locking rooms to the server.
  Support handling room updates in web client.
  Support receiving and broadcasting room update events.
  Use room document from Welcome rather than synthesizing a response.
  Add Room document and send it back in response to room joins.
  Send Hello with Iid from Javascript client, and use the data from the Welcome.
  Add server support for responding with Welcome to a Hello.
  Major refactoring of server side code to allow isolated unit tests.
  Refactor web app room logic into separate service.