Extract TransactionManager from DatabaseComponent
This branch extracts the transaction management methods from the DatabaseComponent interface into a TransactionManager interface. This allows components that use high-level transactional APIs to avoid depending on DatabaseComponent.
The eventual goal is to merge all redundant methods that have one variant that takes a transaction and another that provides its own transaction, which will mean more callers will need a TransactionManager.
Unscheduled work that I did during my lunch break. :-) Part of #35