[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.
[jvstm-ojb/common] Only restart the transaction on a RecoverableRollbackException
Merge pull request #150 from jcarvalho/fix/rollback-exception

Fix/rollback exception
[jvstm-ojb] FenixCodeGenerator is now abstract.

  * Closes #141
Bugfix: add RemoteCommit.toString()

This allows the logger in ClusterUtils.sendCommitInfoToOthers to be able to
abstract itself from what type of RemoteCommit we're using.  When the
SpeculativeRemoteCommit was added it had introduced a bug here.