All the DB operations in this method operate on a single commit, so
make it a transaction on this commit. This has the advantage in
googlesource.com's DB implementation of making the various updates
asynchronous and hopefully improving latency.
Allow various exceptions to propagate out of the inner method calls
and fail the transaction. This means we will not necessarily forge
ahead with the update in cases where we would have before, but there
were a fair number of ignored errors that could lead to inconsistent
state. This hopefully cuts down on the number of possible
inconsistencies.
Change-Id: Ie8a18185ba4b5d9cd936dd4963b68d0ae9579d5a