Add documentation about what this is doing. I can read it in the code, but something about how this condenses the number of items in the iterator by routing each item through the StatefulSummer would be good.

Man, I'm excited for value classes. I actually think that you should add

```scala
class EnrichedIterator[T](it: Iterator[T]) {
   def sumWith(summer: StatefulSummer[T]): SummingIterator[T] = new SummingIterator(summer, it)
}
```

And the appropriate companion object & implicit conversion.