Refactoring of LogicalPlan and QueryGraph

A LogicalPlan now has a `solved` field, that indicates the
corresponding QueryGraph that the plan solves.

QueryGraph now only exists in one version - the difference
between Optional and mandatory patterns is seen by where
the QueryGraph is used and not by a different type.
Introduced a case class instead of tuples for Selections predicates
Change QueryGraph to store optional matches as sub queries
Rename also elements inside pattern expressions
Move helper identifier name functionality to a support class
Teach SimpleQueryGraphBuilder to extract pattern predicates into sub queries
Make all the tests green again...
Add SemiApply and planning for it
Adds SemiApplyPipe which allows Ronja to take on some pattern predicates
Refactoring of selection planning
Merge pull request #2288 from systay/subgraph-signature

Allow Ronja to handle pattern predicates