log count of pending for all queues

even when there are no pending
Merge branch 'create-dbs-with-read_committed_snapshot' into 62829-log-0-pending-to-graphite
Merge branch 'master' into 62829-log-0-pending-to-graphite
Merge branch 'master' into 62829-log-0-pending-to-graphite
fix typo, mispelled table name
enable running single threaded queues

gives us another data point for why messages are remaining locked but not processed
Merge branch '62829-log-0-pending-to-graphite' into single-threaded-queues
minor reformating
use Rx to fix buffering from Tpl

Tpl has issues where it buffers messages internally.  The most we've seen is 24 buffered.  The outcome is that the last N messages sent will sit in the buffer until other messages are entered.  If no messages are added for an hour, then some messages will remain unprocessed for an hour.  Rx doesn't seem to suffer from this so we're switching over.

To repro: use Tpl processor, publish 100 msg=fast and then grep log for "druq.messages_.*_pending_Regular".
extract msgproc metrics logging to common class

- and reduced noise by logging every 5 seconds
typo
make slow subscriber not quite so slow
create DedicatedMultiThreadedQueueProcessor

- gives us control over the threads and messages in the buffer.
Merge branch 'master' into single-threaded-queues
add Safely.Retry(attempts,action,onError,onFinalError)
use Safely.Retry
comment unused multithread queue processors
add Stoplight.Sleep

- Thread.Sleep but wakes thread when stoplight turns red
add Envelope.SafeUnlock and call from processor

add mechanism to ensure we can unlock an envelope, or alert ops when a message becomes perma-locked
QueueThrottle uses Stoplight.Sleep instead of Thread.Sleep

stopping service went from 30 seconds to 5