Since every Origin should be from the same Repository, and we are blaming a single file at hopefully high speed, we should actually be using a single ObjectReader for things like looking up the scapegoats.

I think we should have a single object that represents the BlameWalk that carries the Repository and ObjectReader around to the various classes that need them.  So for the strategies we should be passing through the BlameWalk and the Origin, and the strategy can use the BlameWalk's ObjectReader to perform its reading work.