Don't grab a job when executors are busy.

Jobs can be triggered by non-gearman sources, sadly.  This makes the gearman
plugin aware of when executors are busy and it will refrain from grabbing a
job from gearman in those circumstances.

It's far from perfect, but should at least handle the most likely cases where
a job is already running an an executor.

Change-Id: If993c6d6bc63ed89b385d2e5bb41762ef84a429f
Don't grab jobs when shutting down.

This rearranges a bit of the previous change to move the WaitBool
functionality into an AvailabilityChecker class.

It implements the new feature of not grabbing jobs while not in the
quiet mode for shutdown by using a busy wait.  There doesn't seem to
be an event framework for that, and well, it doesn't happen very
often, so a slow busy wait probably isn't terrible.

This only applies to Executor workers, not Management workers
(so jobs can still be stopped and descriptions set).

Removed the default-name constructor of AbstractWorkerThread because
it is not used anywhere now (removed its test as well).

Change-Id: I6d5e1cd3cb47c8876ceb909d205cb66445388992