Annotation Extraction
Created by: dbluhm
This PR builds on top of Michael's changes for annotation extraction. This represents an attempt to simplify and preserve type safety while also clearly defining roles of different aspects of the code.
Notably, this PR introduces the AnnotationExtractor and GeneratedFileWriter interfaces and reworks the WriterGenerator interface to clearly define what kind of data is extracted and processed.
Open to feedback