Factored out PrettyToString trait
Split pprint package into generic and cypher specific parts

o New package: perty - generic pretty printing facility
o New package: docbuilders - cypher specific docbuilers
o Add TopLevelDocBuilder that provides convenience mixins AsPretty, AsPrettyToString
o Make relevant Cypher traits use internalDocBuilder.AsPrettyToString
Merge pull request #2496 from boggle/pp

Split pprint package and make planner artifacts use pprinting for toString
Make QG handle optional match followed by match [RED]