Handle connection state mismatch with periodic reconciliation (#680)
* Handle connection state mismatch with periodic reconciliation
It's possible for Room's connection state to get out of sync with the
underlying transport. This is rare but could happen when the computer is
going to sleep. For example, when the computer sleeps, PeerConnection
would go straight to "closed" without firing the callbacks.
We have also seen rare conditions where RTCEngine went to close without
our knowledge.
This PR adds a last line of defense to ensure Room's state is always correct.
* changeset