[core-api] Added RecoverableRollbackException

  * Also added FenixRollbackException, which allows RollbackExceptions with a cause
  * Modified AbstractTransaction to throw FenixRollbackExceptions when a cause is available,
    and RecoverableRollbackException when the transaction is rolled back due to a TransactionError.