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.
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.
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.
`salt.log` is now a package instead of a module.

The necessary changes were made to assure backwards compatibility.
Added a `salt.log.handlers` module which includes a queue handler.

We now use a queue handler instead of a null handler in order to show **all** log message records, at a latter stage, when we can, finally, show log messages.
Use proper pip mirrors in `integration.states.virtualenv.VirtualenvTest.test_issue_2594_non_invalidated_cache`
The salt logging mix-ins now have it's own module.
Only subclass `NewStyleClassMixIn` if on python < 2.7
Fix `unit.log_test.TestLog.test_issue_2853_regex_TypeError` by importing salt's logging from the proper module.
Renamed `salt.log.config` to `salt.log.setup`.
Allow the loader to search on different paths internally and externally.
Remove some code which should have been removed while cherry-picking.