Initial commit of genesis execution module
Cleanup syspath stuff
Fix up rpm bootstrap
Finish up tar and untar functionality
Break out tar into generic pack functions
Fix filelisting infinite loops

Related to #11804 but not sure it fixes it entirely
Allow systemd units no provided by unit files to be handled.

This allows to query status, start, stop, restart and list units that
are not actually provided by unit files. Such units cannot be
enabled/disabled and that's why those actions still prefer the
"list-unit-files" output over "list-units".

Units that couldn't be handled otherwise include for example mount
units and sysvinit compatibility units such as those present on
debian systems.

The output of a "service.running ssh" state on a debian wheezy target
is:

          ID: ssh
    Function: service.running
      Result: False
     Comment: The named service ssh is not available
     Changes:

after this patch:

          ID: ssh
    Function: service.running
      Result: True
     Comment: The service ssh is already running
     Changes:
Detect AES key changes in _fire_master

This is a follow up to 8ba9543, which changed the fire_master
implementation to use existing AES key instead of re-authenticating.

That change caused a problem in use cases which send a lot of events
but don't run jobs, because when the AES key changed, the minion
would never notice, and keep sending messages with the old key
indefinitely.

This change adds an attempt to decrypted to response to the sent
event, and to re-authenticated if the response can't be decrypted
in order to handle AES key changes.
Fix compound matching with parens.
Allow minion_id to be specified for certain match functions

This commit allows the minion ID to be specified for the functions in
salt/modules/match.py which operate on the minion ID (compound, list,
pcre, glob). Before, they would just use the value of __opts__['id'],
which makes these functions fail to work properly when run from within
Pillar SLS files, due to Pillar evaluation taking place on the master
(and thus __opts__ referring to the master opts instead of the minion
opts).

By adding a minion_id argument to these functions, the ID can be
overridden, and thus be specified using the 'id' grain in Pillar SLS
files.
Simplify how ID is obtained

No need to force the user to submit the ID, just grab it from grains.
Still allows for minion ID to be passed on the CLI.
simplify dict
Use finally clause for setting back umask
Allow for "imports" within pyobjects files

This allows for pyobject state files to import objects from other state
files by specifying a salt:// URL in the import statement.
Add note about master restart per nodegroups.

Pointed out here:
https://khsing.net/2014/04/11/fight-with-saltstack-no-top-file-or-external-nodes-data-matches-found/
Adding hold and unhold functions to both aptpkg and yumpkg.  Adding initial support to be able to put packages on hold from states.
Adding a check in yumpkg to ensure that yum-plugin-versionlock is installed.  Adding versionadded to aptpkg, yumpkg and pkg.py for new features.
logging process id
Allow systemd parametrized services to be enabled by the service state.

This makes the systemd.get_all function return the combined output of
list-units and list-unit-files and the systemd.available function will
also check for the base unit name stripped of the user parameter
(e.g. dhcpcd@eth0 will be considered available if dhcpcd@.service exists)
Linting
Be more explicit that pkgrepo states only work for APT/YUM