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
Fixed cardinality calculations for bidirectional patterns
Cleanup ReadableLogChannel and LogVersionedStoreChannel interfaces

- Rationale:
  there is obviously some conflation between ReadableLogChannel and LogVersionedStoreChannel interfaces -
  neither purpose is clear and while the functionality they provide is necessary, it is not abstracted correctly.

- Details:
  This PR tries to cleanup those interfaces by extracting and isolating the different abstractions in them, e.g.,
  decoupling the getCurrentPosition and getVersion/getFormatVersion from the read API in ReadableLogChannel.

  It also introduces more specialised interfaces like ReadableVersionableLogChannel which exposes log version
  information when necessary, i.e., when the channel is backed by a log file on disk. In this way we can clean
  up other implementations, like NetworkReadableLogChannel which does not contain log version info.

  Finally, a factory has been introduce to simplify the creation of LogEntryReaders according to the use case.
Added handling of optional match to QueryGraphCardinalityModel
Some refactoring for Closeable implementors
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
Unnamed varlength relationships are now properly named, and relationship predicates properly normalized
Merge pull request #3105 from pontusmelke/varlength-in-ronja

[master] Varlength relationships are now properly named
Merge pull request #3091 from pontusmelke/selectivity-biddirectional-patterns

[master] Fixed cardinality calculations for bidirectional patterns and optional match
Merge pull request #3085 from davidegrohmann/2.2-intf-cleanup

[master]  Cleanup ReadableLogChannel and LogVersionedStoreChannel interfaces
Merge pull request #3109 from lutovich/closeables_refactoring

[master] Some refactoring for Closeable implementors
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