Changing to new wait-condition notification behaviour.

The new behaviour now means that the conclusion of a wait-condition execution
(unlocking to let another processor change the status of the wait-condition)
does not wake other processors waiting on the same supplier.

The impact of this is that if wait conditions modify the state, then this will
not be felt by other wait-conditions.
A few superficial cleanups.
Removing goto from exec_get_work.

This should make debugging easier, since the assertions will be fired
as soon as they fail. Having the merge point before made it so the
generator of the weird task wasn't known.