Refactor

Renamed TransactionTry to Txn
Moved Revision contents to Transact for traits, TransactDefault for
default implementation, RWLock for lock
Added read-only Txn permitting a Shelf.read method that always
succeeds, and just runs some code with the current revision
(technically you can just call Shelf.now and use that, but the
transaction interface is nicer, and it allows for future readAuto that
will rerun the read transaction on changes)