Prepare pkg providers for #3278

These commits do the following:

1. Fix yumpkg5.py so that single-package installs work with the "version"
   kwarg in pkg.install states (this already worked in yumpkg.py).

2. pkg_resource.pack_pkgs now returns a dict of name/version pairs, instead of
   a list. This will allow #3278 to be implemented, by allowing for versions to
   be specified for each package in the "pkgs" list. Packages without a
   specified version will have a value of None in the return dict. Note that
   the pkg.install state does not yet support #3278, as a version check will
   need to be added in order to enforce the specified version. Backwards
   compatibility has been confirmed to work, however, as the data returned from
   pkg_resource.pack_pkgs (a list) is joined into a string, and passing a dict
   to str.join() will join the keys (which are the targeted packages).

3. Both yum providers, as well as apt, zypper, and pacman are updated to work
   for #3278.


**UPDATE:** This is all set for the modifications to be made in
states.pkg.installed. I finished all the Linux pkg providers and re-did the
version comparison functions that I added for 0.12.0 to implement multi-pkg for
the pkg.latest state so that version comparison in salt code is more
user-friendly.

Feel free to merge, but I'll probably come back to this tomorrow to add the
last bits to finish up #3278.