Reducible

Adds `ReducibleType` and `ReducibleOf`.

Includes a test of `ReducibleOf` which demonstrates a runtime crash.
@pyrtsa I was returning `T` to try to avoid having to pattern match against the `Either<T, T>` returned by `ReducibleOf.reduceLeft`’s `combine` function. With `map` corrected, I’ve got to unwrap the Either with a noisy switch statement.

Is there a standard function for producing `T` from `Either<T, T>`? I don’t see anything too likely in Hoogle unfortunately :confused: