fix for #16240

This just exposes a but in the event class where the nonblocking function doesn't check if you have subscribed yet or not
Start listening for returns before firing off the ping
Change timeout behavior to be a combination of "nothing left to ping" and "minions have all timed out"

Before we were fighting between the regular timeout (default 5s) and the gather_jobs_timeout (default 5s), which mean that if they were the same (as they are by default) you will fire the ping job immediately as you time out the return.

This change makes it so they are sequential instead of parallel-- which is what we are really looking for anyways
Add a regression test for #16240
Merge pull request #16242 from jacksontj/2014.7

fix for #16240