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
Aren't the HasData() and GuardedHasData() reversed.
That is shouldn't GuardedHasData() look like
GuardedHasData() {
std::lock_guard<>...
return HasData()
}