refs #129 Use a ReadContext to establish a read lock for certain
insert/query phases instead of a DBWrite lock. Remove the global write
totally - each individual call through the direct client will do its own
locking.
Make sure we note the uncommitted PK before doing the actual insert when
replicating capped inserts. This matches the behavior of non-replicated
capped inserts and prevents a bug where we think this transaction has
already done an insert when in fact it has not.