Use for comprehensions in IndexLeafPlanner and LabelScanLeafPlanner
Introduce the notion of a scope in semantic state

This way, we can accumulate arbitrary information across a semantic check
(such as type information for all encountered identifiers)
without polluting the scope state.
Add cartesian product to Ronja
Collect all predicates found in WHERE clauses
Apply predicates after cartesian product when relevant
Merge pull request #2146 from jakub-/predicate-evaluation

Cartesian product for Ronja