changed timeout from 9999 to self.opts['timeout'] which is the user specified timeout or defaults to 5. With timeout 9999 the loop (almost) never ends if a previously detected minion vanishes/shuts down during the actual batch run.
changed timeout from 9999 to self.opts['timeout'] which is the user specified timeout or defaults to 5. With timeout 9999 the loop (almost) never ends if a previously detected
minion vanishes/shuts down during the actual batch run.

Also added a minion_tracker dict which keeps track of the cmd_iter_no_block-iterators and their minions.
- the cmd_iter_no_block-iterators are now cleaned during every run if the have finished (iterating iters[] gets faster).
- minions that did not respond within the given timeout are taken care of by removing them from active[] and updating ret{} with empty returns.

These two additions enable the main while loop to actually finish before 9999 seconds are over (ret{} and self.minions are eventually the same size)
if a minion which was previously detected does not respond properly.

This also fixes the problem of <batch_count> unresponsive minions blocking the progression of the batch run. Example: if batch=10 and 10 minions are unresponsive,
range(bnum - len(active) ) always evaluates to zero and no more minions are added to next_.

saltstack/salt,saltstack/salt,saltstack/salt,saltstack/salt,saltstack/salt