Done returns a channel that is closed after the next broadcast of
this Cond. Done mus tbe called with the Cond's lock held; the lock
is released before Done returns.
Wait returns after the next call to Broadcast, or if the context
is complete. The context's lock must be held when calling Wait.
An error returns with the context's error if the context completes
while waiting.