Exposing methods that accept Transactions

Any methods that internally use TransactionContext.Run now have
overloads exposed taking in the Transaction to use. This makes the
library more flexible, but maybe a little harder to use, now that there
are more public methods.