Make transaction enforcement stricter
* Nested begin()/commit() will no-op when inside active
DBO_TRX transactions, even if no writes happened yet.
This avoids snapshot loss from REPEATABLE-READ or SSI
SERIALABLE (postgres). An error will be logged.
* Also no-op when begin() happens, no transaction started,
but DBO_TRX is set. That should not happen as it can make
multi-DB commits less robust and can clear snapshots early.
An error will be logged.
* Throw an error when explicit rollback() is used and DBO_TRX
is set. This will cause peer DBs to rollback too via the
logic in MWExceptionHander.
* Callers should use LBFactory methods for doing commit/rollback
instead.
Change-Id: I31b8b1b112cf9110b805a023732bce4dcff0604c