Revert "Make index population job not flip during shutdown"

This reverts commit 7edfe46550259adc1f28792ddcade3322e137f0f.
Makes the sub-interfaces of StatementContext speak for themselves and lets
all implementations of (previously) CompositeStatementContext to go with
one or more sub-interfaces instead. This will have the benefit of having
the cake deflated, i.e. no delegates delegating to pure delegates, but
only delegations between actual implementations.

At the moment this incurs a higher cost when creating the statement
context, but much lower when interacting with the context. The next step
will probably be to reduce the amount of statement contexts we create.
Merge pull request #926 from tinwelint/2.0-perf-kill-composite-stmtctx

Deflation and splitting of StatementContext
Fixes for some flaky tests

o Safeguard against NullPointerException in ConstraintVerificationFKE, by
  using evidence() method to get it.
o Fix LuceneIndexRecoveryIT.shouldNotAddTwiceDuringRecoveryIfCrashedDuringPopulation
   - Test was not deterministic about completion of population job
   - Cleaned up/reverted changes in FlippableIndexProxy made because of the above issue
Added a mutating Cypher REST example. Use the Cypher prettifier everywhere.
Merge pull request #925 from systay/cykops

Make QueryContext partially go through kernel API
CreateUniqueAcceptanceTest.scala
Consistency checking for node labels.

Add test for existing label token store check.
Renamed some existing classes and test infrastructure to reduce confusion.
Check inline label ids.
Check for duplicate labels on the same node.
Check for references to not-in-use label token records.
Check dynamic label ids.
Verify that dynamic label records are inUse and cycle-free.
Encapsulate record allocation into DynamicRecordAllocator interface.
Allow tests to reproduce array store layout without needing a real store.
Restructure NodeLabelRecordLogic:
o Use polymorphism to remove repetitive conditional logic.
o Reduce coupling between field format and NodeStore
o Extract label array manipulation into LabelIdArray utility.
Run databases in target directory instead of using default temp file location.
Merge pull request #930 from apcj/2.0-label-consistency-check

Consistency checking for node labels.
Shutdown executor with timeout instead of waiting indefinitely for futures.
Makes StatementContext stateless by splitting operations and state

StatementContext previously consisted of operations as well as state. Due
to that fact a full StatementContext instance would have to be created per
statement. Seeing that creation of these StatementContexts was very
expensive a different approach was needed.

Here the StatementContext (now renamed to StatementOperations) is
state-less and all its methods accepts a StatementState object as first
argument. The StatementState instance passed in contains all state needed
for all participating layers underneath StatementOperations.
Merge pull request #933 from tinwelint/2.0-the-cake-is-a-lie

Makes StatementContext stateless by splitting operations and state
Removed debug code left in by mistake
not cleaning up after test as file locks held on Windows, breaking CI too often
Fixed default path to be under target/

So that it gets properly ignored by git. It was changed to a non-target/ directory in ab735b2521142a2e003f1ba9668d551dd6eb7769
Consistency check: make store skipping safer.

Only skip stores that will ultimately be covered.
Simplify inheritance hierarchy and remove implicit coupling
  between caching and non-caching implementations to DiffRecordAccess.
Show node labels in graphs, thanks to Pieter-Jan Van Aeken.
Dynamic record manipulation.

Reduce duplication in AbstractDynamicStore.
Extract DynamicRecordAllocator into its own file.
Introduce test for ExistingThenNewRecordAllocator.
Preparation for implementing CREATE UNIQUE in the experimental parser