Add Barrier.Forward(*Barrier) and tests

On several occasions I need the ability to link barriers together such
that if one falls, the other should fall (but not the other way around).

This is useful for example if there is a barrier that represents a signal
to quit, and where there are tasks which are each independently
quittable or cancellable. In that case, we may need to forward
"application quit" to the task quits.