Second patch in the improve-shutdown series. This replaces blocking
sleeps with the use of condition variables for signaling thread
shutdown. The details are:
(1) Create CSimpleCondition class to provide a very basic (simple)
condition variable that can be used in situations where external
mutex control is not required, i.e., the class contains both a
managed mutex and condition variable. Instances of this class
can be used for basic signaling, and waiters can specify user
defined predicates.
(2) Replace instances of large sleeps in worker threads with use of
CSimpleCondition. This allows for very quick response times from
worker threads when a shutdown has been initiated.
(3) Change stop thread booleans to atomic_bool.
(4) Fixes small whitespace discprencies.