Initial work on having DiskLayer implement the full StoreReadLayer API.

This introduces mainly a set of unsupported operations into DiskLayer, and
introduces a hidden config option to disable the cache layer entirely. Some
operations, like nodeExists and relExists, have been implemented.

This would be a first step for assessing database performance
without the object cache.
Fix PathValueBuilder to properly handle var-length expansions with OPTIONAL MATCH
Fix flaky PageCacheTest

The test is racing with eviction and did not properly expect this to occasionally
scew the counters.

The test has been fixed. It's not a bug in the product.
Merge pull request #2752 from jakewins/2.2-disk

Initial work on having DiskLayer implement the full StoreReadLayer API.
Fix compilation error
Less hacky way to disable generating ComponentVersion

The `io` and `primitive-collections` modules are earlier in the build than the
`kernel`, and therefore cannot have ComponentVersions.

The generation of the ComponentVersion class can be disabled by simply not
having a `version-package` property in the pom file.
Lots better than going out of our way to sabotage the ant-run plugin.
Prevents duplicate loading node relationships for created nodes

by putting a node "reservation" in the cache at the time of creating it.
This behaviour existed in 2.1 as well, but there the real node object was
put in the cache so that others could access it before the transaction got
committed. The committer will cache in the reservation, converting it to a
normal NodeImpl cached object and fill it.

Now, having the node reservations in place, readers can see that and treat
such as non-existent nodes. This prevents a race between a committer and a
reader both loading relationships of a newly created node and putting them
in the cache, yielding duplicate relationships in the cache.

Validator for this fix has been flaky org.neo4j.cypher.MergeConcurrencyIT
Merge pull request #2842 from chrisvest/2.2-better-disabling-component-version

Less hacky way to disable generating ComponentVersion
Merge pull request #2840 from chrisvest/2.2-flaky-muninn-test

Fix flaky PageCacheTest
Fix NiceHasher for primitive arrays
Merge pull request #2841 from pontusmelke/path-value-builder-var-length

Fix PathValueBuilder to properly handle var-length expansions with OPTIO...
Synchronizes store application

This brings in one more case under synchronization, and that is where a
store applier runs at the same time as a response unpacker. Also less
commit process objects are produced, which means that the synchronization
that guards their commit method does a better job.

bb822c974cdadb333a3f0daeb4ca4d5eca609120 started this work and this commit
takes it a little further. The root cause of why lack of this
synchronization is causing problems has to be found.
Merge pull request #2844 from pontusmelke/nice-hasher-primitive-arrays

Fix NiceHasher for primitive arrays
Merge pull request #2838 from tinwelint/2.2-sync-store-applier

Synchronizes store application
Renamed PageCacheMonitor methods to be in past tense
Test for node reservation logic

where node reservations are put in cache up front, at the time of creating
the nodes in the user transaction.
Adds PROFILE to Cypher
Removed output methods from monitor
Renamed TransactionMonitorImpl to the more descriptive name TransactionMonitorCounters. This class is now used directly by those wanting to access the counters.
Merge pull request #2843 from tinwelint/2.2-placeholder-node-cache

Prevents duplicate loading node relationships for created nodes
Changed name again of TransactionCounters, so that it really reflects what it does
Replaced AtomicIntegers with AtomicLong