Remove single quotes from `fileset` CLI arg in nim provider

It seems that something must have changed in puppet since the time
that the nim provider was originally submitted.  I believe that
puppet may be handling the intepretation of quotes and other special
characters in command line arguments slightly differently than it
used to; The single quotes in the `fileset` argument to `nimclient`
were not being interpreted by the shell, so they were being passed
through to the underlying package manager as part of the package
name... and since very few packages actually have surrounding single
quotes as part of their package name, this was unsurprisingly failing.

Since the current implementations of this CLI execution stuff in
Puppet seem to be handling the grouping of the individual CLI argument
strings more strictly, the provider seems to work fine without the
single quotes (even if the value we're passing to the `filesets`
argument contains a space).
Support RPM version numbers in NIM package provider

This commit adds a call to `nimclient -o showres` prior to installing
a package; this is necessary so that we can determine whether the
package is an installp package or an RPM package.  This is
unfortunately necessary because the installation command for specific
versions of an RPM differs very slightly from the command for installing
a specific installp/BFF package.

We also have to do an unfortunate amount of regex-based parsing of
the output from that command, because I have been unable to find
a command that provides concise, easily parseable output *and* shows
information about both RPMs and BFFs available on a NIM lpp source.
Fix 'ensure=>absent' for rpms

Prior to this commit, an `ensure=>absent` for an rpm package
via the nim provider would result in a call to `installp -gu`,
which is actually only capable of uninstalling bff/installp
packages and not rpms.  This commit adds a call to `lslpp -qLc`
so that we can determine which package type we're uninstalling,
and then branches to call the appropriate command (`installp -gu`
or `rpm -e`) accordingly.
Better detection of version string for NIM package provider

Prior to this commit, if you attempted to install an RPM
from a NIM source using `ensure=>present`, and there were
more than one version of that package available, the install
command would fail because AIX's rpm system doesn't automatically
default to the newest version if it finds more than one choice.
It simply fails with an error message about there being more than
one version available.

This commit adds some logic for detecting the case where more than
one version is available, and if so, it determines the newest
version number and adds that to the installation command.  Thus,
`ensure=>present` can succeed even if there are multiple versions
of an RPM package available.
Fix modification of package command string

As Nick pointed out in a3ef60bc75c33d3309fc3375b7485621d3b4a285,
the way that this code was implemented would have the undesirable
side effect of modifying the value of the provider's `@resource[:name]`
value.  Changing the code from `<<` to `+=` causes the string
to be copied rather than modifying via reference.
Explicitly fail on BFF downgrades in the AIX package provider

Attempted downgrades of BFF packages via the NIM package provider
do nothing because the package is superseded by a newer
version, but still don't exit non-zero. The only way to downgrade is to
force the installation, which requires us to ignore dependencies. As
this isn't palatable, we now explicitly fail if we see that the
package was superseded by a newer version.
Explicitly fail on RPM downgrades in the AIX package provider

Attempted downgrades of RPM packages via the NIM package provider
do nothing because the package is superseded by a newer
version, but still don't exit non-zero. The only way to downgrade is
to force the installation, which requires us to ignore dependencies. As
this isn't palatable, we now explicitly fail if we see that the
package was superseded by a newer version.
DRY up spec tests for nim package provider
Explicitly reference /usr/bin/grep

GNU grep may not support the `-p` option that AIX's grep does, and
that's critical for this provider.  This commit changes the CLI
command to explicitly reference `/usr/bin/grep` to avoid any
potential issue where the user has modified the path in a way that
might make GNU grep the default.
Fixes and cleanup based on pull request feedback
Merge pull request #1450 from cprice-puppet/feature/aix/nim_package_provider

Feature/aix/nim package provider