Recursive protocol conformance checking failure

If `Reducible` requires that `Self` conform to `ReducibleType` in order to access `Self.Element` instead of requiring a third type parameter, then `Latch<T>` must already conform to `ReducibleType` for it to be correctly inferred that it conforms to `ReducibleType`. Recursive inferencing of this nature is not currently supported in Swift; it seems like it would require a fixpoint of some description (but then that is my preferred When-You-Have-A Hammer).