(WIP) adding an abstract Connection class to handle protocol stuff

This involves replacing '.remote' everywhere in the process code with
'.conn', and creating a unique Connection method for each message or
operation on the slave.  I've gotten through most of the slave
initialization for PB, but AMP is completely unimplemented.

Most of the complexity in master/buildbot/buildslave/base.py that deals
with disconnections, keepalives, duplicate slaves, and so on should move
to the protocol classes, where it will be invisible to the rest of
Buildobt.  That will allow us, eventually, to implement automatic
reconnections without any change to the process code.

The Connection.notifyOnDisconnect method uses
buildbot.util.subscription, so it returns an instance which callers can
use to unsubscribe, rather than calling dontNotifyOnDisconnect.  So that
will require a few changes.