Interface AtomicKVStore

Extension of the KVStore interface for implementations that support atomic, batched reads and writes.

Atomic batch reads are available via snapshot(), which returns a consistent point-in-time views of the KVStore.
Atomic batch writes are available via mutate(), which applies a set of mutations in an "all or none" fashion.