Simpler and more correct handling spurious wakeups

My previous patch for handling spurious wakeups solved the issue in the
Event class, which was only a partial fix. This patch fixes the issue in
the Condition class, making it a true replacement for standard library
Condition, eliminating the Event class, and simplifying the code.

Condition keeps now a generation number, increasing on each
notification.  Waiting for the condition returns only if the generation
number was increased, or the timeout has expired.

Signed-off-by: Nir Soffer <nsoffer@redhat.com>