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
Same thing here.  Should Guarded Push Head be guarded and PushHead is not guarded?