Add in socket hub

This standardizes our socket use more. Now each use of sockets will have
it's own hub, and we can broadcast to all connections on a hub.
Right now, we just have a peerHub, and whenever the peer list changes,
we can call writePeers, and it will push the jsonified peerList to the
peerHub broadcast, sending the peerList to all the peers. The javascript
listens for this message, and updates the peerList whenever it receives
it.
The socket hub idea, as well as most of the code is from this example:
https://gist.github.com/garyburd/1316852