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
Change the fsclient to only be created once

This allows for the fsclient to not have to re-init multiple
times with each salt-ssh call. it also allows for the fsclient to
be available for the complete execution sequence
Enable fileserver backends for extension module pushes in salt-ssh
envs is not a load passing function
Use the correct refs to download the files
Merge pull request #16242 from jacksontj/2014.7

fix for #16240
Merge pull request #16258 from thatch45/ssh_refactor_fsclient

Change the fsclient to only be created once
Merge pull request #16259 from thatch45/ssh_fsclient_mods

Ssh fsclient mods
Merge remote-tracking branch 'upstream/2014.7' into 2014.7_sam5