Ensures tx manager gets called in KernelTransaction#commit no matter what

Calling KernelTransaction#commit must end up calling transaction manager
commit/rollback so that the transaction will get finished properly.
This is done by having any operations done before it gets performed in a try
clause with the tx manager delegation in its catch/finally clause.
Merge pull request #1176 from tinwelint/2.0-shell-fail-rollbackonly-commit

Ensures tx manager gets called in KernelTransaction#commit no matter what