refactoring in progress to make supporting additional SCMs easier as well as just using specific pieces of churn like analyze logs, or get commits between range