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