Added APIs to cleanly shutdown workers

Queue.stop() initiates stopping all workers.  Active workers finish up their current jobs, workers that are idle stop as soon as is possible (worst case it may take up to a minute for an idle worker to stop, but in most cases they stop almost immediately).

Once all workers are stopped the "stopped" event is emitted.