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.
dockerio module: docs syntax and formatting
resolves #7998461

defaults module can be used to add default variables to a formula without the need for a pillar
Updated docstrings
Starting on unit tests for docker and salt.utils.
Fix a spacing issue in pkg.py
Fix language for "failed to update" packages, Fix #9348

The "All" was quite misleading
Check for, and attempt to create, SOCK_DIR in minion tune_in, Fix #8365
Error message in copyfile now uses dest and not source
Added helper function to easily create directories
Added wheel test for testing token authentication
Added integration tests for RunnerClient's master_call
Fix rabbitmq_user code block tpyo
Do not waste CPU cycles on stat(2) on each _auth

Currently servers that handle many thousands of minions spend measurable time
doing only stat(2) calls.

In strace it looks like::

     0.000093 stat("/etc/localtime", {st_mode=S_IFREG|0644, st_size=118, ...}) = 0
     0.000236 open("/etc/salt/pki/master/minions", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 154
     0.011412 stat("/etc/salt/pki/master/minions/hostXXXX.linkedin.com", {st_mode=S_IFREG|0644, st_size=800, ...}) = 0
     0.000102 stat("/etc/salt/pki/master/minions/hostXXXX.linkedin.com", {st_mode=S_IFREG|0644, st_size=800, ...}) = 0
     ...many thousands lines...
     0.000064 stat("/etc/salt/pki/master/minions/hostXXXX.linkedin.com", {st_mode=S_IFREG|0644, st_size=800, ...}) = 0
     0.000062 stat("/etc/salt/pki/master/minions/hostXXXX.linkedin.com", {st_mode=S_IFREG|0644, st_size=796, ...}) = 0
     0.000485 stat("/export/apps/salt/log/master", {st_mode=S_IFREG|0644, st_size=37769598988, ...}) = 0
     0.000065 stat("/export/apps/salt/log/master", {st_mode=S_IFREG|0644, st_size=37769598988, ...}) = 0
     0.000184 stat("/etc/salt/pki/master/minions_rejected/hostXXXX.linkedin.com", 0x7fff28209f40) = -1 ENOENT (No such file or directory)
     0.000071 stat("/etc/salt/pki/master/minions/hostXXXX.linkedin.com", {st_mode=S_IFREG|0644, st_size=800, ...}) = 0
     0.000074 open("/etc/salt/pki/master/minions/hostXXXX.linkedin.com", O_RDONLY) = 154

Happens that on each _auth() call salt is counting files in pki/master/minions
and checks whenever those are regular files by applying os.path.isfile()
function to each which considerably slows things down.

This patch removes isfile() call that effectively makes check_max_open_files()
check less precise (but since it's already subject to external race conditions
like creation/removal of files by another process it should be OK) in exchange
for making it much faster.

PS. Note that calling salt.utils.verify.check_max_open_files() on each _auth is
not really efficient, it probably should be done periodically in a background
thread.

Sponsored by: LinkedIn
Signed-off-by: Alexey Ivanov <SaveTheRbtz@GMail.com>
Merge pull request #9368 from damiencaselli/develop

Fix rabbitmq_user code block tpyo