Refactored SimpleLogicalPlanner

* Extracted implicit class methods into their own classes
Adds the inner loop of the planning

* Introduces the PlanTable
* Introduces the CandidateList
* Added the plan building loop inside SimpleLogicalPlanner
Refactor leaf planners not to use folding of the leaf plan table

Instead, each leaf planner will produce a candidate list. Afterwards
all candidate lists will be merged into a single one, sorted and pruned.
Merge pull request #2123 from systay/goo-planning

More work on the new planner for Cypher