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.
Add EXPLAIN to the shell
Made CypherService return plans when called with an explain query

o Pulled out inner classes from CypherService
Update Jackson version
Serialize plan arguments
Expose ronja compiler for tests
Add PlanSerialization to ExecutionResultSerializer
Make sure EXPLAIN is not accepted for older compilers