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.
OK, clarifying that this is a fraction you are computing that is represented as a `(Long, Long)` helps, but I'm still scratching my head at what this test case is implying that it is computing. Here is my attempt at describing it:

- Over the region R spanned by these reads (which is the loci range `[1, 17)`):
    - For each segment of that region between the starts of two of the reads (edit: I realize now that in fact the segments are obtained by chopping `chr1:1-10` into `3` pieces, with both of those constants on [L336](https://github.com/hammerlab/guacamole/pull/189/files#diff-a93d156384b5ccb3c1ef5a1bead4881aR336):
        - Compute the average read depth on that segment, expressed as a `(Long, Long)`.

I see now that my confusion came from not understanding that the region was chunked in 3 pieces by the `3` on L336, not because there are 3 reads, or 3 bases between the start of each read.

So I get now that what you are demonstrating here is that `windowFoldLoci` allows you to chunk up a loci range and compute avg read depth in each chunk.

I think it would be clearer if you made your example reads a little less of a linear progression, so that the result made it more obvious exactly what things had been averaged. For example:
* 3 reads, all length 10, starting at 1, 3, and 9
* divide the region `chr1:1-15` into 5 pieces
* expect counts of `(4, 3)`, `(6, 3)`, `(7, 3)`, `(7, 3)`, `(3, 3)`

I think showing a little of the way down on the right side of the reads would make it more clear as well.

Here's an ASCII pic:

```
We split the loci 1-15 into 5 regions:

        12345678901234567890
r1:     AAAAAAAAAA
r2:       CCCCCCCCCC
r3:             GGGGGGGGGG
region: 111222333444555

Region 1 has 4 read-bases over 3 loci, region 2 has 6 over 3 loci, region 3 and 4 each have 7 over 3 loci, and region 5 has 6 over 3 loci.
```