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.
We now have a struct, `Reducible`, providing typealiases for readability.