Add get_selections() and set_selections() for dpkg.

This module will enable to freeze a package at a certain version, with the "hold" state.
Add TODO, amend later... FIXME.
Merge my dpkg-selections branch with develop.

Resolved conflicts in modules/apt.py.
Fix merge mistake.

urllib2 and json is part of standard Python.
Use yaml.safe_load()
Add another TODO
Use code-block

As per @terminalmage suggestion.
Initial addition of fileserver event

This event is intended to "notify" salt that there are changes to the underlying fileserver module. This can be used to (for example) trigger a module sync within the reactor system-- but really you can do whatever you want with it.
Add `gitfs_base` config option to set base branch

Add the ability to use a branch other than `master` as the base
environment by setting the `gitfs_base` option in the master config
file.

The Problem:
When using both a feature-branch based git workflow and gitfs, then in order
to test changes in the feature-branch, the top file in the master branch
may need to be modified. It is undesirable to change the master branch in order
to test a feature branch.

Intended Use:
This change is intended to allow for a dev/testing/staging environment
with its own salt master to dynamically change which branch to read the
top file from (with a restart of the salt master). E.g., the test salt
master can set its base branch to `feature` -- which has a modified top
file -- in order to test the changes in `feature` without requiring
changes in `master`.
Rename events to match namespacing standards
Merge branch 'develop' of github.com:saltstack/salt into develop

Conflicts:
	salt/fileserver/gitfs.py
Removed salt.ssh from the packages as it was moved to salt.client.ssh
Merge pull request #6927 from jacksontj/develop

Initial addition of fileserver event
Merge pull request #6965 from evinrude/fix_build_post_ssh_fixes

Removed salt.ssh from the packages as it was moved to salt.client.ssh
Adapt tests configuration to the running user.

Since salt's cli tools now try to change the user to the configured one, when running the tests suite as non-root, we need to adapt the user setting on the configuration files.
Merge pull request #6960 from jesusaurus/gitfs/base

Add `gitfs_base` config option to set base branch
remove pylint checks from travis, these are done in jenkins now
Use the running user and default group for symlink ownership

This commit modifies the work done in 77b749d. Instead of using
root:root for the default symlink ownership if no user/group is
specified, the user under which the salt-minion is running is used when
'user' is not sspecified, and the default group of whatever is assigned
to 'user' is used (whether specified directly or derived using the
aforementioned method).
Use the real `logging` module.

It will still be a NOOP operation since the module is already loaded.
Implement a log handlers loader which will allow extra logging handlers to be used/configured.

* Added the notion of a queue logging handler which just stores the log message records to be sent, at a later stage, to specified logging handlers.
* The previous null logging handler is now a queue handler. This allows salt not to loose any logging messages, as soon as we get the temporary logging handler going, we sync the recorded log messages with the temporary logging handler, ie, all stored log messages are sent to the temporary logging handler.
* The logging setup procedure is now:
  * Setup two queue logging handlers. One is the previous null handler, the other will keep storing the log messages until the additional logging handlers can receive them. Both will store all logging messages as soon as salt is started, without logging configured.
  * Setup a temporary logging handler which outputs to `sys.stderr`. At this stage the previous null handler "feeds" the stored log messages to the temporary log handler and is destroyed.
  * Load any additional logging handlers using Salt's loader system. At this stage, the second queue logging handler "feeds" all logging messages to any additional logging handlers configured and is destroyed.
  * Setup console logging using salt's configuration. At this stage, the temporary logging handler is destroyed since we can now properly log to the console.
  * Setup, on request, file logging.