Delays node/rel record changes until commit time

This completes the move from changing record state at the point of making
that change in the transaction to the point where the transaction is
committed. A side effect of that is that KernelStatement no longer needs
access to TransactionRecordState and so the abstractions gets clearer.

The issue provoking this change was that a transaction could create a
relationship and delete it in the same transaction, with the outcome that
a command was created saying to delete that relationship, even though it
didn't exist before the transaction started. Then if replaying a log
containing such a transaction there would be and exception thrown applying
that transsction where the id of that record couldn't be freed since it
was above highId.

This commit also removes duplicate and unexpected checks for if records
exists at the point of converting transaction state into record state. All
those checks now exist in the KernelAPI, and so they were removed from
TransactionRecordState.
Removes QueryPlan and moves the solved PatternQuery to LogicalPlan
Merge pull request #2969 from tinwelint/2.2-alter-entity-record-state-at-commit

Delays node/rel record changes until commit time
Merge pull request #2972 from systay/solved-on-logicalplan

Removes QueryPlan and moves the solved PatternQuery to LogicalPlan
Revert "Revert "Move pretty printing of ast nodes to ASTNodes""

This reverts commit 853c20d7332cf5d46a7752ceb04352defb9e543a.
Make Pretty take an inner doc gen for rendering child nodes

o Makes ASTNode render using default
o Factors out ToString concern more clearly
Moving ast doc pretty printing to doc builders again but this time using the converter pattern
Pretty-printing collections
Fix astDocBuilder to properly pretty print nested values
Add astStructureDocBuilder for printing both ast and structure
Various pretty printing tweaks

o Support ast.Parameter
o Disable astStructureDocGen for now
o Add Doc.noBreak
Extract core of perty function composition into separate bling package

o Improves error handling
  o Uses total functions to Option to be more aware of error situations
  o Inline with concrete docGens instead of weird outer wrapper
    (error handling is a docGen local concern with a sane default)
o Replaces all of docbuilders and docgenerator types with new DocGen[-T]
o Temporarily disables ast support
o Rename HasDocFormatter => DocFormatting
o Rename HasDocGen => DocHandler
o Rename ASTTerm => ASTPhrase
o Prepares ast printing to use converter pattern (not hooked in / commented out)
Convert old doc builders to doc gens and re-enable pretty printing their subjects via toString()