Fixed spurious hang in future and memory issues

The future would hang  very randomly (repeatable within ~70k
iterations) for this and the previous implementation.  I think the
internal condition variable was being deleted before it was done
notifying the wait threads.
Used some memory tools to weed out memory corruption
Solid as rock now!