Add extra decimal places to chains/day and blocks/day in debug.log for future-proofness.
Remove some more memory allocations and other system calls.
Added a bunch of debugging code for verifying the sieve output.
Fixed an old bug in GetNextCandidateMultiplier() that was producing invalid CC2 candidates when switching sieve extensions.
Optimize ProcessMultiplier() by skipping the entire function if nMinMultiplier < nMaxMultiplier.
Fix possible assertion error when printing mining statistics during shutdown.
Second round of fixes to CCheckQueueControl to fix the assertion errors.

My previous attempt to fix the issue was commit d8f7447983, which failed to
address the issue completely. This previous fix guarantees that there is only
one control thread.

However, it is possible for a worker thread to wakeup during execution of
CCheckQueueControl::CCheckQueueControl(). This may happen because the wakeup
order is undefined after notify_all() is called. It creates a tiny time window
where the worker thread has temporarily decremented nIdle, which causes an
assertion failure in CCheckQueueControl::CCheckQueueControl().