The C++ standard calls for wait_for() to use steady clock and
wait_until() to use the clock that is provided as an argument. This
is not currently done in libc++ and is not possible with the pthreads
API, however it is possible with the underlying futex system call.
This change re-implements std::condition_variable with a tweaked
version of the implementation of pthread_cond_* from Android bionic to
support the correct semantics.
Bug: 35756266