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
not cleaning up after test as file locks held on Windows, breaking CI too often