Prevents transaction push failures to set the transaction manager in bad state

By introducing a new specific exception class that such code can throw,
and which will be caught and handled specifically in TxManager. Such a
failure will still throw exception out to the user, but will not set the
transaction in not OK state (which would require a restart/recovery to come back).
Merge pull request #2223 from tinwelint/1.9-go-easy-on-txpush-failure

Prevents transaction push failures to set the transaction manager in bad state