OGM-548 Add fields in RowKey and AssociationKeyMetadata

  * AssociationKeyMetadata#rowKeyIndexColumnNames
  * AssociationKeyMetadata#rowKeyTargetAssociationKeyColumnNames
  * AssociationKeyMetadata#rowKeyEntityKeyMetadata
  * RowKey#entityKey

  These methods allow a store to obtain information related to both side
  of the association.
OGM-548 Fix compilation errors for infinispan, couchdb, ehcache, mongodb

  The previous commit added some arguments to the constructor of RowKey
  and AssociationKeyMetadata but update only the core module
OGM-548 Create Neo4jTupleAssociationSnapshot in Neo4j

  This class is responsible for the conversion of a relationship into a
  set of properties representing a RowKey
OGM-548 Remove redundant properties from a relationship in Neo4j

  Using the additional information in RowKey and AssociationKeyMetada,
  it is now possible to find the nodes on both side of an association
  and therefore create it is now possible to create a relationship and
  remove the intermediate step of the TEMP_NODE creation.

  Note that this pull request will also create a relationship for
  *ToOne relationships in preparation fo OGM-521.
OGM-548 Update ManyToOneTest

  Neo4j always create a relationship, therefore the expected count of
  the association is going to be 1 and not 0.

  This should have been part of OGM-521 but while fixing the current
  issue I ended up creating a relationhip for this case.
OGM-548 Update Neo4j mapping unit tests

  * Relationships should not have properties except for indexes
  * Test fail for unexpected properties
  * Remove redundant columns for embedded associations
OGM-548 Add test to check the mapping of @ElementCollection with index in Neo4j
OGM-548 Add test to check the mapping of Maps in Neo4j
OGM-548 Add GraphLogger class to log information about graph elements
OGM-548 Log details of created/updated graph elements
OGM-548 Update Neo4j documentation