* feat(sds): messages with lost deps are delivered
This is to re-enable participation in the SDS protocol. Meaning the
received message with missing dependencies becomes part of the causal
history, re-enabling acknowledgements.
* fix(sds): avoid overflow in message history storage
* feat(reliable-channel): Emit a "Synced" Status with message counts
Return a "synced" or "syncing" status on `ReliableChannel.status` that
let the developer know whether messages are missing, and if so, how many.
* fix: clean up subscriptions, intervals and timeouts when stopping
# Conflicts:
# packages/sdk/src/reliable_channel/reliable_channel.ts
* chore: extract random timeout
* fix rebase
* revert listener changes
* typo
* Ensuring no inconsistency on missing message
* test: streamline, stop channels
* clear sync status sets when stopping channel
* prevent sync status event spam
* test: improve naming
* try/catch for callback
* encapsulate/simplify reliable channel API
* sanity checks
* test: ensure sync status cleanup