Refactor coupling between RTCConnection and Peer...

* A peer now directly binds to datachannel events, since they're
  already coupled anyhoo. This makes Peer abstract away all the
  control message ping-pong, which should smooth out event handling
  for SyncModel as it only cares about state and sending/receiving
  via the data channel