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.
Yea, let me look at this more.  This started as a plan to move varargs up the call chain (as you mentioned there are a few places where we know there is exactly one or two SlidingWindows and when it was 1 we just wrap it in `Seq(_)`, which I wanted to remove.  I'll look into a way to clean it up further or just 'restWindows'  to  `Seq`