Refactor PeerConnection into two parts.

BTProtcol takes bytes from TCPClient and converts them to simple internal messages. PeerConnection then takes an action based on that message.