Basic support for pretty printing structured text documents
Introduce LineWidthChecker and refactor pp abstractions
Make LineDocFormatter and LineWidthChecker tail recursive and use builders
Refactor pp to be more convenient to use

o Rename Doc.break to Doc.breakHere and use Doc._ in tests
o Introduce Doc.breakCons and make Doc.text implicit
o Rename LineWidthChecker to LineFitter
Introduce PageDocFormatter
Basic docs for pp package and add pp.apply for easily calling into pretty printing
Introduce anyDocGen
Change doc generation types to be partial functions and reorganize package layout
Rename pp* -> pprint*
Pull out shared code into helpers
Introduce QueryGraphDocGenerator for pprinting QueryGraphs
Separate pprint and pformat
Reorganize DocGenerators by replacing some forNestedXYZ methods with objects that are RecursiveDocGenerators
Add QueryProjectionDocGenerator
Split DocGenerator into SimpleDocGenerator and DefaultDocGenerator
Introduce PlannerQueryDocGenerator
Make PlannerQuery.toString use pretty printing
Apply function naming convention to pprint package
Simplify pprint document construction and clean up tests
Introduce basic ast doc generator (handles identifier, equals, property lookup for now)