Update to the PKGREPO apt functions in apt module

* URI is was not really a functional feature since
  the uri was the element that the pkgrepo functions
  used as a base for matching internally.  it is essentially
  a new source definition if the URI changes, so the best
  bet is to .absent the repo and add a new one.

* added in ability to manage repo keys to the APT .managed module
  and by nature of how .manage calls apt.mod_repo, the pkg.mod_repo
  can also now add GPG keys for the apt repositories

* added "consolidate" option.  This will smash down the apt repositories
  into as few lines as possible.  It should do some basic cleanup.  This
  function helps (when enabled) to ensure that salt doesn't miss a repo
  when it's not the "first" matched in the .get_repo function for a
  .managed state.

* changed pkgrepo to watch for exceptions from .mod_repo so that if
  there is an error (exception) that is raised (intentionally or
  unintentionally) the error is displayed to the user.

* updated documentation for apt pkgrepo to reflect these changes
Merge pull request #3463 from morganfainberg/pkgrepo-apt-update

Update to the pkgrepo apt functions in apt module
`zmq.IPC_PATH_MAX_LEN` is not available in older ZMQ, only on PyZMQ>=2.2
Merge pull request #3466 from s0undt3ch/hotfix/zmq-ipc-path-max-length

`zmq.IPC_PATH_MAX_LEN` is not available in older ZMQ, only on PyZMQ>=2.2
Merge pull request #3468 from archtaku/quickfix

Fix bug in nested outputter when displaying floats
PEP8 fixes from PyLint
Modify pack_pkgs() to return name/version pairs

This is in preparation for #3278. This commit preserves backwards
compatibility for providers that have not been updated to support
specific version numbers the "pkgs" argument to pkg.install.
Make version specification work with "pkgs" (yum)

This makes yumpkg{,5}.py ready for #3278. It also makes version
specification for single-package installs work in yumpkg5.py.
Check "version" kwarg after parse_targets
PEP8 fixes from PyLint