Fix some issues in libthread_xu's condvar implementation.
* Non-broadcast mode is not guaranteed to signal just one waiter, loosen
it up a bit to close race conditions and signal more if necessary.
* Clean up the condition structure. Do not try to track non-broadcast
wakeups. Do not try to block waiting for individual wakeups... the
spec does not require it and, in fact, doing so can create more
problems then it solves.
* Load oldseq from cv->c_seqno *BEFORE* releasing the passed mutex to
close a race. The mutex is there precisely so that userland can
guarantee that no race will occur between waiter and signaler.
Reported-by: Jordan Gordeev <jgordeev@dir.bg>,
"Simon 'corecode' Schubert" <corecode@xxxxxxxxxxxx>