Change Relation to always be between two DomainObjects

  * Changed the generic types in Relation from <C1,C2> to
    <C1 extends DomainObject,C2 extends DomainObject>, and updated all other
    classes that also received similar generic type arguments.

Work done in collaboration with Hugo Rito <hugo.rito@ist.utl.pt>
Refactor infinispan and ogm backends to call generateBaseClassConstructorsBody during ctor code generation

  * This will allow future code generators that need to override this call to
    work correctly without further modifications to these backends.

Work done in collaboration with Hugo Rito <hugo.rito@ist.utl.pt>
Add getName() to relation

Work done in collaboration with Hugo Rito <hugo.rito@ist.utl.pt>
Allow code generators to provide default listeners when creating a relation

Work done in collaboration with Hugo Rito <hugo.rito@ist.utl.pt>
Add mechanism for Transaction-local storage, and the TxIntrospector interface and implementation

  * Transaction-local variables are kept inside the Transaction.TxLocal class.
    This class also handles GC'ing old instances corresponding to finished
    transactions, via a worker thread that is automatically started.
  * Added the TxIntrospector interface to the
    pt.ist.fenixframework.txintrospector package. Compared to the old version
    from the JVSTM backend, it now returns values as Collections instead of
    Sets.
  * Finally, the TxStats class implements the new TxIntrospector interface,
    and serves also as a gathering point for the different information
    collected during a Transaction. An instance of TxStats is associated
    with a running transaction using the new Transaction-local mechanism.

Work done in collaboration with Hugo Rito <hugo.rito@ist.utl.pt>
Add txintrospector module, containing the TxIntrospectorCodeGenerator

  * The TxIntrospectorCodeGenerator adds code to dml classes that interacts
    with the previously-added TxStats class to keep information about a
    transaction that can be accessed using the TxIntrospector interface.

  * Modified IndexesCodeGenerator to extend TxIntrospectorCodeGenerator instead
    of DAPCodeGenerator.
  * Modified InfinispanCodeGenerator to add hook to call
    TxIntrospectorCodeGenerator when generating setters.

Work done in collaboration with Hugo Rito <hugo.rito@ist.utl.pt>
Refactor enable mechanism for TxIntrospectorCodeGenerator

  * Updated to be similar to the new strategy also used in DAP
  * Added a runtime check to test if the code generator was enabled when trying
    to access the TxStats instance

Work done in collaboration with Hugo Rito <hugo.rito@ist.utl.pt>
Add dummy Transaction implementation to the mem backend

Work done in collaboration with Hugo Rito <hugo.rito@ist.utl.pt>
Add client API to TxIntrospector

  * Converted TxIntrospector from interface into abstract class, and added two
    methods --- getTxIntrospector() and getTxIntrospector(Transaction) --- to
    be used by fenix framework clients to access the TxIntrospector.

Work done in collaboration with Hugo Rito <hugo.rito@ist.utl.pt>
Add listener support to TransactionManager, refactoring it into an abstract class

  * Also update existing backends to the new API

Work done in collaboration with Hugo Rito <hugo.rito@ist.utl.pt>
Add missing project files for eclipse, and workaround in parent/pom.xml for ignoring dml-maven-plugin in eclipse

Work done in collaboration with Hugo Rito <hugo.rito@ist.utl.pt>
Use B+Trees to hold collections in backend OGM
Merge feature: Use B+Trees to hold collections in backend OGM
Merge remote-tracking branch 'origin/big-refactoring-2012' into cloudtm
Merge branch 'big-refactoring-2012' into cloudtm