Remove collection parameter

This removes the collection parameter from reducers, and uses functional indirection to bring this that much further in line with Oleg’s definitions.

The mutable state in `Stream`’s implementation of `ReducibleType` remains due to the lack of a monad type in the interface. Thus instead of describing the reduction in terms of binding, we have to advance a closed-over variable.
This functional indirection means that each call to `reducer()` results in a new pass over the source, and thus obviates the need for the `collection` parameter.