Implement relayAll and relayAny

RelayAll latches with the successful results of a thunk collection, or
with the failure of any one thunk in the collection. RelayAny latches
with the result of the first thunk in a collection to complete, and may
not execute all thunks in the collection.

RelayAll efficiently performs a non-blocking group join. RelayAny
creates a safe–albeit nondeterministic–race condition to see which
thunk completes first.