Factor out moving over loci to an iterator to allow for folds

I wanted to factor out moving over loci for a set of SlidingWindows.  Until now we had only performed a flatMap over loci in a window collecting results at each loci.  I wanted to do two things 1) Factor out the code to move loci by loci over a set of sliding windows and 2) Add some other operations as we move loci by loci, i.e. a fold so we can aggregate data about the reads in order.  I will add some tests for the fold, but wanted to get some feedback earlier on.

cc @timodonnell Might be worth checking out for you if you are looking to get back into guac things.
It's averageReadDepth as fraction (numerator, denominator) for average depth. `totalDepthAndNumLoci` works too, but I can't really say what `totalDepth` means.  Added more comments to explain, let me know what you think