[bplustree] New Feature: Special version of B+Trees to hold domain objects.

  * The serialization of the backing maps is done via JSON objects, avoiding
    serialization of byte[]. This shows greater performance as well as allowing
    the trees to be portable across backends and Framework versions
  * The new tree shares the code base with the regular tree, differing only in
    the serialization.
[consistency-predicates] DomainMetaClass now uses a DomainBPlusTree to hold its MetaObjects
[bplustree] Extracted InnerNode's constructors to init methods

  * This allows the constructor's code to be reused in subclasses
  * Also extracted LastKey representation to its toString()
[bplustree] Improved JavaDoc and error messages for DomainBPlusTree
[bplustree] Renamed DomainInnerNode's indexedSubNodes to subNodesByOid
Merge pull request #139 from jcarvalho/feature/btree-serialization

Specialized B+Tree for DomainObjects
[jvstm-ojb][jvstm-common] Fix: Upgrade transaction after validation to avoid re-validation

  * After a successful in-memory validation, a transaction might still
    revalidate itself even when no updates came from the TransactionChageLogs.
    This occurs for every transaction that starts in a version older than the
    most recent at commit time.  By upgrading the committing transaction to
    the most recently valid state after a successful in-memory validation, we
    enable it to detect cases where no revalidation is needed after an empty
    update from the TransactionChageLogs.
[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.