(AIX) Exclude arch from uninstall on old RPMs

Prior to this commit, the RPM provider assumed that `rpm` would
know what to do with the architecture (e.g. i386, x86_64, ppc)
when uninstalling a packages (e.g. `rpm -e mypkg.i386`).
Unfortunately, this only works for relatively modern versions of
`rpm` (4.2.1+).  This commit checks the version of `rpm` and will
add or exclude the architecture from the arguments sent to `rpm`.

Sprintly: fix item:251
(AIX) Remove RPM test from yum spec

Prior to this commit, the yum package provider spec was testing
functionality that did not exist in the yum package provider, but
rather in its parent, the rpm package provider. This commit removes
that test because now we have a proper rpm provider spec.
(maint) RPM install should have --oldpackage

Prior to this commit, the RPM package provider would force the
`--oldpackage` option; however, older versions of RPM (i.e. 3.0.5 on
AIX) don't really like `--oldpackage` when you're doing an installation.
Rather than treat it as a NOOP, the older versions of RPM fail. This
commit changes the behaviour so that `--oldpackage` is only used when
the package is an up-/down-grade.

Sprintly: fix item:208
(AIX) Tests for proper usage of --oldpackage w/ RPM

Prior to this commit, there were no tests for installing packages
with the RPM package provider. This commit adds tests to validate
that when a package doesn't already exist `rpm` is called with
`-i`, and when any version is already installed `rpm` is called
with `-U --oldpackage`. These tests are important because older
versions of RPM, such as 3.0.5 on AIX, barf when `--oldpackage` is
applied with `-i` whereas newer versions of RPM simply treat it as
a NOOP because it doesn't make sense with `-i`.

Sprintly: fix ticket:208
(AIX) Replace RPM SemVer comparisons with versioncmp

Prior to this commit, the RPM package provider was using SemVer
for determining if version numbers less than specific versions to
enable or disable specific flags. Unfortunately, SemVer requires
version numbers to have, at a minimum, x.y.z and several releases
of RPM only have x.y, causing SemVer to barf.  This commit retains
the logic (and adds tests), but uses the more lenient
`Puppet::Util::Package.versioncmp` instead.

Sprintly: fix ticket:252
Merge pull request #1425 from jeffweiss/ticket/aix/251_rpm_on_aix_loves_highlander_there_can_be_only_one_architecture

(AIX) Exclude arch from uninstall on old RPMs
Merge pull request #1416 from jeffweiss/ticket/2.7.x/208_rpm_on_aix_is_as_pedantic_as_i_am

(AIX) RPM install should not have --oldpackage
(#6936) Fix undefined method "groupname_by_id" error on AIX user provider

Without this patch, `puppet resource user lindsey gid=4242 ensure=present` fails with the following error:

`err: /User[lindsey]/gid: change from 600 to 4242 failed: undefined method 'groupname_by_id' for #<Puppet::Type::User::ProviderAix:0x20eae6e0>`

This patch fixes the problem by fixing the method definition which makes the above command succeed:

`notice: /User[lindsey]/gid: gid changed '600' to '4242'`
Merge pull request #1410 from praxxis/ticket/2.7.x/6936_numeric_gid_on_aix

(AIX) (#6936) AIX user provider fails if a gid is specified instead of a name.
Merge pull request #1428 from jeffweiss/ticket/aix/252_rpm_says_semantic_versioning_is_pedantic_versioning

(AIX) Replace RPM SemVer comparisons with versioncmp
(AIX) (#11581) Fix undefined method "list_all" error on AIX user provider.

Without this patch, `puppet resource user` fails with the following
error:

`./lib/puppet/provider/aixobject.rb:291:in 'instances': undefined
method 'list_all' for Puppet::Type::User::ProviderAix:Class (NoMethodError)`

This patch fixes the problem by fixing the method definition which
makes the above command succeed and list all of the user resources.

Sprintly: fix ticket:203
Merge remote-tracking branch 'praxxis/ticket/aix/11581_puppet_resource_user_error' into aix

* praxxis/ticket/aix/11581_puppet_resource_user_error:
  (AIX) (#11581) Fix undefined method "list_all" error on AIX user provider.
(AIX) Convert RPM flags to array

Prior to this commit the flags passed to `rpm` during upgrade or
downgrade were a monolithic string of "-U --oldpackage". The
provider attempts to send this to RPM as a single flag, which
causes `rpm` to barf.  The commit changes the flags sent to `rpm`
to an array of strings, which allows upgrades and downgrades to
actually function as expected.

Sprintly: fix ticket:269, ticket:271
Merge pull request #1430 from jeffweiss/ticket/aix/269_you_didnt_want_to_upgrade_package_right

(AIX) Convert RPM flags to array
Add an acceptance test for the aix package provider

This file provides a baseline of test coverage for the aix package
provider, including installation, upgrade, downgrade (which ought to
fail) and removal, all using puppet apply.
Don't create .toc file in aix package provider acceptance test

It turns out installp will automatically create this file when invoked,
which means it doesn't need to be taking up valuable screen real-estate
in this acceptance test.
Cleanup tmp dir after running aix package provider test
Use actual package name for acceptance test

This was using an old placeholder and never got updated. The test wasn't
failing because it was expecting the command it was running to fail
because the package didn't existed, which of course would always be
true.
Merge pull request #1434 from nicklewis/aix-package-provider-acceptance-tests

(AIX) Add an acceptance test for the aix package provider