In order to accurately read-only transactions with ClientLocalHistory,
we need to differentiate between Transactions and Snapshots. This patch
introduces the concept, its API and backend signalling/implementation.
State keeping is reworked so it requires only a single field, which
is manipulated via an atonic updater, with null signifying state has
already been closed (or is in process of being taken care of).
Change-Id: I2f8fd5ffdff366d1948538299b96721b756c620c
Signed-off-by: Robert Varga <rovarga@cisco.com>