Branch filtering

Added dynamic branch filtering support, where the to and from branches are used to filter the commit history used between 2 build points.

Probably makes sense to merge this after #30 has been merged as this change already includes #30 changes. Happy rebase/merge this PR once #30 is in.
Interested your thoughts on the interplay between the GetFromCacheOrFunc whether it has an impact on the enumeration on a cache hit?