Cleanup EideticRequestMonitor
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.
Make ronja pipes avoid unnecessary copies of execution context maps
Refactor IdSeekIterator
Increase the test timeout for PageCacheTest#rewind…
Remove the StandardPageCache and make Muninn the default
Reduce the memory overhead of the MuninnPageCache

Every instance of a class that overrides the `finalize` method, gets a ~40-byte
companion `java.lang.ref.Finalizer` object, that uses the reference mechanism
to track the lifetime of the object and run the finalizer when needed.

These Finalizer objects also participate in a JVM-wide doubly-linked list,
which worsens the GC pause times.

These issues have been fixed by introducing a MemoryReleaser that knows about
all the raw pointers that we will want to release, and then every MuninnPage
has a reference to the MemoryReleaser. When all the pages have been collected,
the MemoryReleaser becomes elegible for finalization, and then it will free
all our pointers in bulk in its finalizer method.
Avoid object creation in Pipes
Make community tests pass with the MuninnPageCache

... without running out of memory
Merge pull request #3089 from chrisvest/2.2-pc-rewind-timeout

Increase the test timeout for PageCacheTest#rewind…
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
Add a timeout on the failedLatch which waits for the master to disappear

- removed the electedLatch since we can use cluster.await instead
Merge pull request #3087 from boggle/micro-ops

Cypher performance optimizations
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.
Merge pull request #3086 from chrisvest/2.2-muninn-ftw

2.2 Make Muninn the One True PageCache
Clarify default cache type per edition
Completes the IdMapper interface change

by letting InputRelationship deal with Object ids for start/end nodes.
Now it became apparent that stages 1 and 2 cannot be executed in parallel
if the IdMapper needs preparation. Put that check in and added comments
about it.
Merge branch '2.1-maint'

Conflicts:
	community/kernel/src/main/java/org/neo4j/unsafe/impl/batchimport/RelationshipEncoderStep.java
	community/neo4j/src/test/java/upgrade/StoreUpgraderTest.java
Added handling of optional match to QueryGraphCardinalityModel