Added stop function to queue

I created a stop function to help me with that scenario:
   - Stop an action that used a queue for running subtasks.
   - Know when all the running subtasks have completed.

The current kill method removes the drain callback as it should, so I added a stop function that will keep the drain.
Stop will also make sure that the drain is called if there is no active worker. I did that in case stop is called before the workers started running.