fix(engine/jobex): decrement job retries on exception during flush

Problem:

Currently the job retries are not decremented if a job fails with an
exception thrown during command context flush.
Examples of such exceptons are:
- optimistic locking exceptions
- database integrity constraint violations

Idenfified Cause:

The problem is that org.camunda.bpm.engine.impl.cmd.ExecuteJobsCmd has a
try/catch block around the execution of the job:

try {
  job.execute(commandContext);
} catch (...) {
  ... register listener on TX rollback
}

If an exception happens AFTER the catch block, the listener is not
registered.

Proposed fix:

Always register the transaction listener on rollback. This way it will
always be triggered if the transaction rolls back. If the transaction
succeeds, the listener is not triggered.

related to #CAM-2603