Refactoring of the top level Cypher compiler and how it handles compatibility with older compilers
Introduces ExtendedExecutionResult

ExecutionResult is an interface that, by mistake, is what older compilers implement. Because of this, it
can't be changed in future versions. By introducing ExtendedExecutionResult and having compilers
produce internal ExecutionResults that are translated to the public interface, we preserve the ability
of changing the external interface without having to recompile old compilers.
Reenable backup warning when no log files could be copied
Test cache invalidation issue for dense nodes.

The issue that causes invalid cache invalidation on rollback is
extra likely to occur for dense nodes, so a particular test case
for that scenario is desirable.
Rename master methods to reflect their purpose.
Merge pull request #2774 from systay/new-execution-result

Update backward compatibility for Cypher
Clean up tests
Cypher: Finds more cases where Eagerness can be avoided
Cypher: Solves eagerness problems when using FOREACH
Less eagerness for MERGE
Merge pull request #2801 from systay/create-unique-eagerness

Less eagerness for Cypher - FOREACH, CREATE UNIQUE and MERGE
Merge pull request #2734 from jakewins/2.2-masterapi-cleanup

Rename methods in Master interface to reflect reality.
Improve type error message in cypher `reduce(...)`

For the case where the accumulator and the expression have mismatching
types, it was not clear that the type error was for that reason. This
change improves the message for that case.
Add EXPLAIN to the shell
Adds execution plan description handling to the server
Make sure EXPLAIN is not accepted for older compilers
Merge pull request #2806 from cleishm/cypher-reduce-type-error

Improve type error message in cypher `reduce(...)`
Merge remote-tracking branch 'upstream/2.0-maint' into 2.1-maint

Conflicts:
	community/cypher/cypher-compiler-2.1/src/main/scala/org/neo4j/cypher/internal/compiler/v2_1/ast/IterableExpressions.scala
	community/cypher/cypher-compiler-2.1/src/test/scala/org/neo4j/cypher/internal/compiler/v2_1/ast/ExpressionTest.scala
	community/cypher/cypher-compiler-2.1/src/test/scala/org/neo4j/cypher/internal/compiler/v2_1/ast/ReduceExpressionTest.scala
	community/cypher/cypher/src/test/scala/org/neo4j/cypher/SemanticErrorAcceptanceTest.scala
Merge pull request #2812 from systay/2.0-into-2.1

Merge 2.0 into 2.1
Merge pull request #2798 from chrisvest/2.2-backup-warn

Reenable backup warning when no log files could be copied