A light-weigh condition variable and lock, like Monitor, but this
one is movable and can be garbage collected. Note that this lock is
heavier than an object monitor, but has the advantage of being usable
within GC (this lock never allocates in its methods, and never uses
read or write barriers, either).