Fetcher shouldn't pull jobs if workers are busy.

Previously, fetchers would fetch an additional job as soon
as a worker receives the previous one. This can have a few
downsides:

1) If you're running multiple processes and the jobs
take a long time to finish, a message can be stuck in a
process that's full, while the other process is waiting
on work.

2) If the queue is empty when the worker takes the job,
the fetcher will sleep for a second before attempting to
request another job. If the worker finishes in a few
milliseconds, this means we'll needlessly wait around
until the fetcher wakes up before requesting another job.

3) When requesting the process to stop, we'll start at least
one new job (as we've already fetched one, and it's setting
on the channel). Now stopping is more immediate, and will
only wait for existing workers to finish the work they've
already started.