Further iteration on commit/rollbacks
Further iteration on commit/rollbacks

Fixed logic around commit/rollback such that we return an error
when a txn cannot be committed. This decision follows the principle
of least surprise and will be more intuitive for users. Not sure
we need to handle this case in the client since we don't allow users
to manually manage txns but just in case I decided to make this more
right.

eryx67/sqerl,eryx67/sqerl,namjae/sqerl,namjae/sqerl,chef/sqerl,chef/sqerl