Rename stuff and remove unused "cleared" field
make batch part of the MessageBus API and provide high-level callbacks

concept:

  - atomic batches are used for reconnect quiescence; to simulate the "replace"
    operation needed by per-doc quiescence by "atomic remove and add"

  - non-atomic batches give you the ability to do something after a batch of
    messages. for example, an update will change many documents. you may want to
    only recompute an ordered observe (in order to get the LCS right) after
    you've applied all of the changed messages.

  instead of listening on the raw batch message, you actually can listen on
  "entering atomic", "ending atomic", and "leaving all batches"
test MessageBus batch API
require messages to be in a batch
refactor state for atomic mode observations (not tested, does not work)
atomic mode observations might work now, but it is not tested