Expand SubtestDocs into class-tree

*  Better delegates responsibilities across multiple classes
*  Allows subclassing for special parsing of documents.
*  Improves unittesting.