message: Properly unregister suspended sessions
  If a session transitions to Inactive while an external reference is held it
  isn't unregistered immediately, so it needs to be unregistered once the last
  external reference is dropped or it'll incorrectly live forever.
diff: @@ -404,6 +404,11 @@ struct sync_session_states::Inactive : public SyncSession::State {
  {
  session.m_server_override = SyncSession::ServerOverride{address, port};
  }
  +
  + void close(std::unique_lock<std::mutex>& lock, SyncSession& session) const override
  + {
  + session.unregister(lock); // releases lock
  + }
  };
  