Add autoreject_file support to minion authentication

This commit adds support for a file similar to autosign_file, which can
be used to automatically reject minions which match the expressions
inside it.
prepend root_dir to autoreject_file
Add autoreject_file to master config template
Add autoreject_file to master config file documentation

Included a versionadded directive to note when this was added, to reduce
confusion.
First attempt at abstracting ZeroMQ communication.
Complete abstraction of ZeroMQ.
Updated the index of the troubleshooting docs with some new links to master and minion docs, added those, did not add content yet.
Don't assume that grep-available is available
dockerio module: docs syntax and formatting
Fixes pillar namespace merging not preserving order when replacing keys
Remove trailing semicolons from previous commit
Compensate for time spent waiting for events
Fix issue #7157
`exsel` matching is no longer supported.
Restore event subscription
Increase master timeout during tests now that it is not incorrectly incrementing
Improve reporting for errors caching binary packages

This commit catches MinionError exceptions encountered when caching
remote binary packages. In execution functions, a CLI-friendly
CommandExecutionError is raised. In states, a False outcome is returned
with a meaningful error message.
Allow '_in' requisites to match both on ID and name

Under the hood, all '_in' requisites are changed to extends of their
corresponding type. For example, a require_in for a given state extends
the target of the require_in with a 'require' requisite, pointing back
at the state where the require_in was located.

When these extends are reconciled, only the ID declarations are examined
to see if there is a state matching the requisite's target, meaning that
these '_in' requisites cannot point to a 'name' override in the same way
as their counterparts are able to. For more info, see
https://github.com/saltstack/salt/issues/9061.

This commit modifies the extend reconciliation behavior. If there is no
ID declaration matching the requisite's target, then
salt.state.find_name() is used to search the high data for an ID
declaration with a 'name' param matching the requisite target. If a
match is found, then the extend is reconciled against that matching ID.
If no match is found, then the requisite is not found the appropriate
error is returned.
Initial working code to support specifying additional modules to include in a thin.tgz (think mako :)
Add an "overwrite" arg to force creation of a tarball even if the version number is the same
Fix for windows installs without extra_install_args