Async listener V0.

Hi Brian!

This code is the prototype of asynchronous listener running in a separate thread.

The listener itself is still based on an infinite loop and delays. Nonetheless:

* Listener thread tears down correctly.
* A method to essentially "Flush()" the listener, to ensure that all available entries are processed, is added.
* Tests are now async-aware, making heavy use of the method above.
* Mutexes are in place, likely more than there should be.

All tests pass.

Thanks,
Dima
Shouldn't we be calling GuardedHasData(), which is actually guarded, and not locking the mutex, because it is locked in guardehasdata()