add master_alive_interval options
remove __mine_interval_job, moved to minion.py
enable the minion to detect if the master disconnected using a scheduled job. has to be explicitly enabled by
setting the master_alive_interval in the minions config. the handling of the __master_disconnect event is still
POC. not yet sure what to do in it and how to make it as flexible as possible.
first version of server density monitoring modules
Switch to arg parser.

Resolves #13294
A deep copy should be used for default options.

Use deep copy to get default master and minion options to avoid altering
them.

This fixes an issue encountered when defining grains for multiple nodes in a salt-cloud map file.
Nodes deployed later in the process were getting grains for previously deployed nodes.
Cache the sreq inside the zmqchannel instead of caching the entire channel object.

This is an improvement over #10332 in that you don't have to worry about someone creating a ZeroMQChannel then forking (thereby breaking the thread-pid rules). This way once it moves it will create a new sreq as needed.

This is possible now that #13155 is merged
fixed commments
Only Debian famiry systems need saltenv

Only Debian systems(modules/aptpkg.py) need saltenv for mod_repo function.
If not differentiate it, RedHat famiry systems will add saltenv option to the repo file.
Document the keep parameter of archive.extracted state
If interface type is slave, not auto set hwaddr

If auto set hwaddr for bond, it will use the true hwaddr for the first time. It's correct.
But interfaces will display same hwaddr in a bond by use 'ifconfig' or 'ip link show' when bond running,
Then they will reset to same hwaddr when execute state again, os will prompt like:

    Bringing up interface bond0:  Device eth2 has different MAC address than expected, ignoring.
                                                           [  OK  ]

eth2 interface in this example will eliminate from bond0. It's incorrect.
Fix systctl parsing on no space separator
Fix composer example docs
Fixing issues where packages were being put on hold even when test=True.  Fixing issues related to listing and putting packages on hold using yumpkg, certain assumptions about the results of yum-versionlock were made which were false.
Adding some checks to ensure a package exists in the available repositories if not passed with a source URL, before allowing to be put on hold.
Merge pull request #13284 from jacksontj/channelreuse

Reuse ZeroMQChannels
Fix pylint error
Merge pull request #13354 from felskrone/minion_alert_disconnect

Minion alert disconnect
Merge pull request #13357 from Katafalkas/serverdensity_modules

first version of server density monitoring modules
Fix CLI Examples per #13357
Merge pull request #13370 from cachedout/13294

Switch to arg parser.