Fix: Throw RollbackException when Transaction.commit fails

  * The failed commit was being caught and silenced, which could not be
    detected by whoever called commit.  Now, it throws a RollbackException.
    We might even consider letting the TransactionError pass up if needed.
Refactor CodeGenerator to facilitate the addition of backend-jvstm-common