Add AllSuccesses join combinator

This is modeled on the Successes combinator, but has
the semantics that either all operations succeed or it
fails with the first failure.
This is difficult to demonstrate given the current test setup because nothing is actually asynchronous.