Use gevent.queue.Queue to distribute work

...rather than the previous algorithm of passing work at thread start time.