Make QueryContext partially go through kernel API

o Make hasProperty use propertyKeyId
o Make removeProperty use propertyKeyId
o Make Cypher delete entity operations go through kernel
o Introduce TokenContext has a shared trait of {Plan,Query}Context
o Enhance TokenType and KeyToken to provide getId, getOptId, getOrCreateId functionality
o Make DeleteAction take a KeyToken argument
o Support for resolving property keys at plan build time
o Make expressions.Property use KeyToken property keys
o Make Cypher setProperty operation go through the kernel
o Replace prior LabelResolution
o Make CloseableIterator always return Maps and materialize Streams
o Make Cypher getProperty go through the kernel API
o Make dumpToString() reopen QueryContext as needed
o Rewrote MapPropertySetAction
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.