(PUP-1085) Pass --needed to pacman on installation

This prevents constant re-installation of packages if package groups are
specified.
(PUP-1085) Add better handling of pacman package groups.

This patch constructs a virtual version for package groups, consisting
of lines in the format:
<pkgname> <pkgver>

This allows detection wether a package in the group is out of date.
For example for the resource...

package { 'gnome':
    ensure => latest,
}

...puppet will produce the following output (note the epiphany package
version upgrade):

Notice: /Stage[main]/Main/Package[gnome]/ensure: current_value
baobab 3.12.1-1
empathy 3.12.4-1
eog 3.12.2-1
epiphany 3.12.1-1
[...snip...]
, should be
baobab 3.12.1-1
empathy 3.12.4-1
eog 3.12.2-1
epiphany 3.12.1-2
[...snip...]

Also, package groups that are partially installed are considered absent
now. This prevents the provider to think that the group `gnome` is
installed, just because the package `eog` is installed, which was
previously the case.
(PUP-1085) Return :absent for missing pacman packages.

As the provider is not purgeable, it should not return purged for
missing packages. Instead, return absent.
(PUP-1085) Add virtual_packages feature to pacman provider.

As the pacman provider is handling package groups, it should implement
the virtual_packages feature so users can turn it off.
(PUP-1085) Sanitize pacman provider errors and warnings.

Some errors should fail the process instead of returning nil moving on
silently. Also refactored raises to fail() calls.
(PUP-1085) Fix pacman provider to query groups only once.

Fixing the pacman provider to only query for group information one
time instead of one invocation per installed or partially-installed group.

Changing the versions for groups to remove the newline characters in
favor of being comma-delimited (Arch package names cannot have commas).