Modifying eif_lock, fixing processor wait condition waiting.

The eif_lock now uses multiple inheritance to really be a unique lock,
which makes the usage a little more straight forward and can be used directly
with the std::condition_variable.

Related: fixing a condition variable that was converted from while-form to use
a closure. The closure took the condition from the `while' rather than the
egation (which it should have been).