Issue #16424: List all providers when creating salt-cloud instance without profile

For this purpose `self.opts['providers']` is as good as `mapper.map_providers_parallel()`
Fix war deployments

Because of wrong filenames for non salt:// files it could not deploy the war file properly.

Also, the logic to determine the version was a bit iffy so I have added a different approach of retrieving a version.
Return empty dict for list_pkgs(purge_desired=True) with macports

This fixes #16828
Use sys.__excepthook__ to be pythonic. cc: s0undt3ch
Add test.assertion
Route module exceptions back to the master

Refs #11613

This first routes events across the minion event bus before kicking them
back to the master. I think this may give us more flexibility in the
future, in terms of error streaming and pluggable error handling,
masterless, etc, etc.
Fix linting
Register error handlers with reactor as callbacks

This is kind of a wild idea, but here goes.

I modified the reactor system to accept raw functions that act as
callbacks.

This means that we can get rid of loops that check for events and
instead just write functions that can register *theselves* with the
reactor and then have events streamed back to them. This has a lot of
interesting applications, such as facilitating a GUI that, instead of
using an REST API, could simply have a lightweight event-driven API that
registers with the reactor and has updates streamed back to it.

This is a proof of concept of this idea which illustrates minion error
messages being tossed across the event bus and the master registering an
error handler with the reactor to process them.
Improve filter_by() base argument:

  * Change filter_by() base argument to a key in lookup_dict rather
    than a dictionary.  This allows more compact usage and more
    readable use of base values/defaults in the lookup_dict.

  * Change/improve function-local documentation for lookup_dict().

  * Add specific use-case of "base" argument for lookup_dict() in the
    formulas documentation.

  * Expand filter_by() unit testing to validate use of base argument.

  * Add unit test for salt.utils.dictupdate.update() to provide
    complete depth-of-testing of filter_by() which uses
    dictupdate.update().
Appease the pylint gods; back-out unrelated changes.
Support job data
Workflow to display minion exceptions in LocalClient
module that gathers vpc properties, returns dict
flatten and document get_returner_options().

Flattening the get_returner_options() func:
split into several funcs, return early when possible.

Document all arguments (it appears usage is quite a bit complex).

PEP8 almost everything.

(This code is ran very often in Salt. Hello Jenkins!)
Merge remote-tracking branch 'upstream/develop' into develop
Fix lint
Fix lint
Don't execute query if test mode is enabled.

Fixes 16756
Fixing salt.modules.zpool.exists
Chechking if zpool is present on the system