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
Updated consistent semantics for SaltEvent get_event factor
node is application kind which is provided by opts['__role']
the values of application kind are 'master, 'minion', 'syndic', 'call'
This allows RAETEvent to set up its lanename correctly
on a master the manor lanename is always 'master'
on a minion the manor lanename is derived from the opts['id']
In general opts should be passed to get_event when possible salt_cloud is the exception for now
This means that can never have two masters running on the same host unless all the directories are
made unique such as cachedir and sockdir
but multiple minions can run on the same host
fMerge remote-tracking branch 'upstream/2014.7' into 2014.7_sam5

Conflicts:
	salt/daemons/flo/core.py
	salt/utils/raetevent.py
Merge pull request #16257 from SmithSamuelM/2014.7_sam5

Updated consistent semantics for SaltEvent get_event factor
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
Really copy dict, not only the ref to the dict.

Code comment says dict is copied, but only ref to dict is copied:

  # Create a copy of the object that we will return.
  r = ret

Here, the local var 'r' is pointing to the exact same dict as the 'ret' argument.

I use <object>.copy() because 'ret' is expected to be a dict-like object, and
dict have a (shallow) copy method.
Shallow copy seems sufficient here because the '_generate_doc' method and
subsequent users of its return only modify 1st level keys.
More cleanup for naming of yard stacks and remotes vis a vis application kind
Also cleanup some uid yid stuff
Merge remote-tracking branch 'upstream/2014.7' into 2014.7_sam5
Merge pull request #16273 from SmithSamuelM/2014.7_sam5

More clean up of yard naming vis a vis application kind
Merge branch '2014.7' into develop

Conflicts:
	salt/netapi/rest_tornado/saltnado.py
Merge pull request #16264 from feth/really_copy_dict

Really copy dict, not only the ref to the dict.