WIP: Transaction manager
The transaction manager coordinates read and write transactions between simultaneous praefect clients. Some of the current ideas being worked out:
- Checks for consistency between nodes before starting a transaction and after completion
- Reports inconsistent nodes to the replication manager
- Always asks storage coordinator for shard replicas before each transaction
- Allows a transaction to lock references for both read and write operations
Closes #1538 (closed)