Initial identifer namespacing work
Make namespaceIdentifiers less invasive

The rewriter will only introduce special names for identifiers if
there's shadowing involved. Specifically, if an identifier is never
projected through from one scope to another, it will not be altered.
In addition, trivial projections such as `WITH n AS n` are also
understood not to introduce ambiguity to identifiers.
Specify the right local effects on the optional match pipe
Simplify inliningContext given our new contracts for shadowing

This also allows for more aggresive inlining. See StatementConvertersTest
for examples of AST -> PlannerQuery conversions that are now more inlining
happy.
Improve the clustering of identifiers to address scoping limitations
Move the namespaceIdentifiers rewriter to Planner
Merge pull request #3084 from jakub-/optional-match-eagerness

Specify the right local effects on the optional match pipe
Merge branch '2.1-maint'

Conflicts:
	community/cypher/cypher-compiler-2.2/src/main/scala/org/neo4j/cypher/internal/compiler/v2_2/executionplan/builders/OptionalMatchBuilder.scala
Merge pull request #3072 from jakub-/identifier-namespacing

Identifier namespacing
Add a cardinality estimator based on the query graph

Signed-off-by: Jakub Wieczorek <jakub@jakub.cc>
Add QueriedGraphStatistics that collect statistics using core API at runtime
Hook in the QueriedGraphStatistics
Minor fixes to cardinality estimation and friends
Mark all pipes being used by Ronja with a trait to identify them
Add estimated rows to all Ronja execution plans
Tweaks to the cardinality model

Simpler solution for OR selectivity
Assume independence between predicates
Merge pull request #3057 from systay/cardinality-by-query-graph

Add a cardinality estimator based on the query graph
Fix compilation problems
Make ronja pipes avoid unnecessary copies of execution context maps
Refactor IdSeekIterator