Altered prevention to avoid repeat auto tasks

This issue is similar to #134, but the fix provided did not cover all cases. As described in [my comment](https://github.com/caolan/async/issues/128#issuecomment-6977246) in #128, the problem exists due to the fact that multiple auto tasks can be called within a single stack, and because each finished task iterates over a snapshot of the listeners at the time of its completion, a single task can be called multiple times.

I altered the unit tests to move the old task5 to the current task6, since reproducing this requires a specific order of tasks.