(PUP-1085) Fix handling of package groups in pacman provider.

These commits fix the pacman package provider's handling of groups.

Previously, the pacman provider would return a version of '1' for package groups if a single package of the group was installed.
This meant that group that were partially installed were considered to be installed.  Additionally, if a package in a group was updated,
the group was still considered to be the latest and no action would be taken to update the group.

This fixes the above issue by considering a package group to be installed only if all the packages in the group are installed.  Additionally,
package group versions are now a concatenation of all the versions of the packages comprising the groups.  This allows the group to install
packages in the group that have been updated.

Also fixed:

* Pass the `--needed` option to pacman to prevent needless reinstallation of packages.
* Return :absent instead of :purged if a package is missing
* Implement the virtual_packages feature to disable handling package groups.
* Improve errors and warnings in the provider.