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.
Had to make the label external to disambiguate sequence & reducible constructors for `ReducibleOf` for types implementing both `SequenceType` and `ReducibleType` (as `Stream` now does). It’s possible that I should have labelled the other one instead.