Defined interfaces for each component.
Parses command line arguments.
Builds a report generator based on command line arguments and
generates a report
Wrote git diff parser