Rebuild Master <-> Slave Communications

This is the start of some work that will likely result in pulling socket.io
for a different transport. This commit just does some reorganization ahead
of that.

* RPC.md: Start documenting what calls go back and forth
* Update socket.io to 1.2.0
* Master: Break slave handling code out into MasterIO object
* Slave: Break master connection handling out into SlaveIO object
* Master: Move monitoring functions into a Monitoring object
* Master: Add `vitals` function that proxies through to a valid stream
* Add tests for Master <-> Slave IO