Use an infinite loop in Worker#poll

The 'until done?' loop, while concise, seemed to be a bit redundant
because Worker#done? is also called while the queue is empty. Better to
consolidate that logic into a single place.
Sleep after calling done? in Worker#poll

It makes more sense to determine whether a worker should exit BEFORE
putting that worker to sleep.
Make small tweaks for readability in worker.rb