OGM-642 Adding test; Using JBoss Logging for creation of exception
OGM-642 Performing read before inserts only if required as per the datastore's capabilities;

* Adding new method GridDialect#getDuplicateInsertPreventionStrategy() for letting dialects configure their duplicate prevention strategy
* Doing the read in OgmEntityPersister#insert() only in case the strategy is LOOK_UP
OGM-642 Using strategy NATIVE for MongoDB
OGM-642 Using strategy NATIVE for CouchDB
OGM-642 Using NATIVE strategy for Neo4j
OGM-642 Making duplicate id detection strategy configurable per entity type;

* Passing EntityKeyMetadata to getDuplicateInsertPreventionStrategy()
* For Neo4j use NATIVE for non-compound keys, LOOK_UP otherwise as unique keys can only be added to single properties
OGM-642 Using NATIVE strategy for Ehcache
OGM-642 Addressing review remarks
OGM-647 Raising EntityExistsException if duplicated entity is inserted