Refactor: Broke Peer up into “Transport” and “Peer”

Transport takes care of reading and writing raw messages. Connecting,
disconnecting, etc etc.

Peers take care of generic Message Handling and system level messages
like hello etc.