removed superfluous call to worker queue task_done()
changed worker queue to support iterable, iterators, and generators without having to "cast" to an interator with iter()