Add logic to recover from lost compactor instructions

Add logic that recovers from a lost compactor instruction by storing
a timestamp in summarize records.  When the newest summarize record
is more than max_age seconds old (default 600), need_summarize() will
return True, causing another summarize instruction to be sent to the
compactor.

This also corrects an oversight in the original code; although
instructions were being sent to the compactor, no summarize records
were being added to the bucket list, which would have caused a
failure to properly quiesce, leading to the potential for race
conditions when compacting a bucket.
Provide an alternate means of configuring the formatter

Rather than being forced to subclass the TurnstileMiddleware class,
provide a configuration option that allows specification of an
alternate formatter for formatting delay messages.
Correct a long-standing bug

Commands with no arguments would still receive an empty argument.
Corrected this by setting arglist to [] if args is unset.