[jvstm-infinispan] Aquire global lock on read-write commit

  * Create ClusterUtils
  * Create ClusteredPersistentTransaction to extend PersistentTransaction with
    cluster-aware behavior (for now: locking)
  * Update transaction factory definition in JvstmIspnBackend
Move all cluster-related code to ClusterUtils class
[jvstm-ispn] Send commit information to other nodes and apply
[jvstm-ispn] Ignore self commits when dealing with remote commits. Expose a bug

  * The thread the receives the remote commit message may get delayed thus not
    delivering the message in time. As such, a committing transaction may not
    realize that another node has already committed.  It will then use an
    already taken commit version.
[jvstm-ispn] Reimplement global lock with AtomicNumber. Revise remote commits workflow.
[jvstm-ispn] Use tryLock instead of lock when starting a transaction
[jvstm-ispn] Adjust Infinispan configuration to improve performance

  * useSynchronization(true)
  * deadlockDetection().enable()
[jvstm-ispn] Increase replication timeout in ISPN
[jvstm-common] Remove system.exit with a persistence exception occurs and just throw TransactionError
[jvstm-ispn] Restore default replication timeout in ISPN
[jvstm-ispn] Reduce replication timeout in ISPN (100ms)
[jvstm-ispn] Add debug logs to RemoteCommit