store: refactor transactions
This change extracts transaction-specific logic from the leveldb
store and reuses it for memstore.
The change introduces another store API: store without transactions.
Now leveldb and memstore implement that new interface and a new
struct, transactions.manager, is used to wrap leveldb/memstore
with transcation functionality.
The main change - move some code from the leveldb/db.go to
transactions/manager.go. Other changes are mostly moving code around.
Change-Id: Ief56bb262ac660fbf0ea75f2651da90758906b17
15 files changed