Introduce new DocBuilder abstraction fo bundling RecursiveDocGenerators with their DocGenerator

o Remove SimpleRecDocGen
o Remove NestedDocGen
o Rename RecursiveDocGen to NestedDocGen
Convert doc builders to be easily chainable as a flattened list of partial functions by introducing DocBuilderChain
Label support for astExpressionDocBuilder
Rename pprint.docGen => pprint.docbuilders
Make sure constructed doc generators are cached