added max_minions to valid config opts with default of 0 (unlimited)
added simple log msg to master for testing
its self.opts, not opts
check length of ckminions.connected_ids() against max_minions
add check for 'full' in masters tune_in return to jump to next master if necessary
return ret='full' is master has reached its maximum number of minions
for now, exit if master is full
- treat max_minions=0 as unlimited
- check if connectings minion is already connect. if already connected, always allow
if master if of type list, check if master_type is set, else start MultiMinion
add check for master_type=failover

master_type=failover expects master to be of type list, check and loop through
the available master until we can successfully log on to a master or a master
has cached the minions key
missing 's' in max_minions variable
added max_minions setting
reworked master_type section

added master being a list of servers

added master_type: failover
add missing 's'
make log message more explanatory
error out cleanly if no master could be reached in failover mode
handle that a master is full in single master mode
remove log msg, its msg gets logged in the minion authentication call
Merge remote-tracking branch 'upstream/develop' into minion_failover_master

Conflicts:
	doc/ref/configuration/master.rst
introducing the foreman ext_pillar module
Fix merge_if_exists in states.file.serialize

This feature was recently added, but about two weeks before it was
added, this state started importing salt.utils.{yaml,json} as yaml/json.
This makes the yaml.load (or json.load) fail since these functions are
not in the serializer modules.

This fixes merge_if_exists by importing the serializer modules for yaml
and json under a different namespace, allowing the yaml and json modules
to also be loaded.

It also makes the change to using yaml.safe_load, and also adds a
versionadded directive for merge_if_exists.