Log when property chains have duplicates

* Introduces the cappedLogger in StringLogger.
* Add a PropertyChainVerifier that checks the consistency of property chains as
  they are loaded.
* Add a PropertyChainVerifier implementation that logs when it finds
  duplicates.
Introduces CC check for duplicate property indexes in a given property chain

The check happens on first property checks, which then traverses the whole
 chain, recording duplicates
Adds a new report error in ConsistencyReport for the new type of inconcistency

As a note, this is a slight bending of the CC framework. It is the first check
 that requires state, whereas all previous cases required single record access
 only. Whether we change CC to accomodate this or we add a new type of "stateful"
 checks, that remains to be seen.

Moves logging for the runtime detector to be a responsibility of NodeManager,
 via an Observer pattern
Clarify default cache type per edition
Merge pull request #3079 from digitalstain/2.1-fix-duplicate-properties

[2.1] Detect duplicate properties
Replace magic -3 with proper consonstant var
ParallelBatchImporterTest should have a test for the writer factory enabled by default

Details:
 - make sure we test the default configuration in ParallelBatchImporterTest
 - refactor to allow to test all the possible configuration
 - disable the test with IoQueue due to a known issue in parallelizing I/O writes
 - make package protected the constructor used only for testing
Improved comments in doImport
Make Funnel independent from IoQueue
Improved test
Remove unused File from the WriteFactory.create

- cleanup IoQueueTest
Merge pull request #3098 from cleishm/default_cache

[2.0] Clarify default cache type per edition
Merge pull request #3096 from davidegrohmann/2.1-fix-pbi-tests

[2.1] ParallelBatchImporterTest should have a test for the writer factory enabled by default
Merge remote-tracking branch 'upstream/2.1-maint'

Conflicts:
	community/consistency-check/src/main/java/org/neo4j/consistency/ConsistencyCheckService.java
	community/consistency-check/src/test/java/org/neo4j/unsafe/impl/batchimport/ParallelBatchImporterTest.java
	community/kernel/src/main/java/org/neo4j/kernel/InternalAbstractGraphDatabase.java
	community/kernel/src/main/java/org/neo4j/kernel/impl/api/store/PersistenceCache.java
	community/kernel/src/main/java/org/neo4j/kernel/impl/core/NodeManager.java
	community/kernel/src/main/java/org/neo4j/kernel/impl/core/Primitive.java
	community/kernel/src/main/java/org/neo4j/kernel/impl/core/ReadOnlyNodeManager.java
	community/kernel/src/main/java/org/neo4j/unsafe/impl/batchimport/ParallelBatchImporter.java
	community/kernel/src/main/java/org/neo4j/unsafe/impl/batchimport/store/BatchingWindowPoolFactory.java
	community/kernel/src/main/java/org/neo4j/unsafe/impl/batchimport/store/io/IoQueue.java
	community/kernel/src/test/java/org/neo4j/unsafe/impl/batchimport/store/io/IoQueueTest.java
	community/udc/src/test/java/org/neo4j/ext/udc/impl/DefaultUdcInformationCollectorTest.java
Merge pull request #3111 from davidegrohmann/merge-2.1-into-master

[2.2] Merge 2.1 into master
String->long in-memory efficient index for batch importer

for use in cases where the node ids given in the node/relationship input
aren't actual record ids, but arbitrary strings. When using this type of
IdMapping the node ids (strings) are fed to the in-memory index during the
node import stage and sorted, and general prepared for getting
String->long later in other stages that deals with relationships where
they also specify these strings as the start/end node ids.
Merge pull request #3102 from S124568/fix-magic-constant

[master] Replace magic -3 with proper consonstant var
Merge pull request #3110 from tinwelint/2.2-batch-import-external-ids

[2.2] String->long in-memory efficient index for batch importer
Restructuring of store and transaction packages

o.n.k.i.
  nioneo.store --> store.{record,id}
  transaction.xaframework --> transaction.{log,state,command}

And various other classes moved to a more logical place.
Merge pull request #3106 from tinwelint/2.2-remove-xa-packages

[2.2] Restructuring of store and transaction packages
Merge remote-tracking branch 'upstream/2.0-maint' into 2.1-maint