heavily-trafficked site with lots of simultaneous
transactions:
* if some exception happens during _begin() or _finish(),
raise ConflictError instead of re-raising the original
exception
* if an exception occurs while unlocking the transaction
lock in _abort(), ignore it.
* fix indentation in _finish() for COMMIT. It would only have
affected non-transactional case and was probably harmless.
(store_result() when no query has been issued results in an
empty result set, I believe)