Merge branch 'stable'

* stable:
  (maint) Change load order for puppet/provider/package/windows/package
(packaging) Update PUPPETVERSION to 3.2.1-rc1
Merge branch 'stable'
(maint) Reset confines on the pip provider after tests

The tests for pip alter the confines for the pip provider by stubbing the
underlying facter calls and then calling lazy_pip. This can leak into later
tests, causing weird failures.
Merge pull request #1654 from pvande/tickets/master/17824-pmt-should-not-prefer-prereleases

(#17824) PMT should not prefer pre-release versions over existing stable versions
(maint) More specific require for windows/package

PR1655 added "require 'puppet/type/package'" to fix a load order issue.
But this change is more general than what is needed, and we had not
tracked down exactly what was occurring.

I spent a little time running down the load order issue for
puppet/provider/package/windows/package.  An example of the mystery
effect being that prior to PR#1655 the following sequence would pass:

bundle exec rspec spec/unit/provider/package/rpm_spec.rb
spec/unit/provider/package/windows/package_spec.rb

while the reverse order would fail:

bundle exec rspec spec/unit/provider/package/windows/package_spec.rb
spec/unit/provider/package/rpm_spec.rb

The reason for it is confusing, but turns out to be not very mysterious
or magical at least.

The summary is that because this was written as follows:

lib/puppet/provider/package/windows/package.rb
---
1  require 'puppet/util/windows'
2  
3  class Puppet::Provider::Package::Windows

Puppet::Provider::Package is assumed, but not required.  Since
Puppet::Provider is loaded as a result of the base require 'puppet', and
since it includes Puppet::Util, which has a Puppet::Util::Package, if
nothing else has explicitly created Puppet::Provider::Package, we
end up declaring the Windows class on Puppet::Util::Package and hiding
reference errors which should otherwise pop up here.

Requiring 'puppet/type/package' does end up also requiring
'puppet/provider/package' as part of type's autoloading magic, but this
patch more specifically and clearly fixes the issue by requiring
'puppet/provider/package'.

Consistency of namespacing and class loading is a deeper issue.
Merge pull request #1656 from jpartlow/maint/windows-package-load-order-cleanup

(maint) More specific require for windows/package
Merge pull request #1643 from jeffweiss/20442_fix_aix_extended_attributes

(#20442)[PE-161] fix AIX extended attributes
Merge pull request #1649 from richardc/fix/master/17871

(#17871) fix nagios types uniqness under ruby 1.9
Generated modules comply with Style Guide

Without this patch, all module generated with `puppet module generate`
will produce code that does not pass lint or comply to our Style Guide.
Merge pull request #1657 from ghoneycutt/tickets/master/20815_module_template_style

Generated modules comply with Style Guide
Merge branch 'stable'

* stable:
  (maint) Reset confines on the pip provider after tests
(packaging) Update PUPPETVERSION to 3.2.1
Merge branch 'release_3.2.1' into stable
Merge branch 'stable'
(#16792), permit to remove all dependants packages with urpmi provider

Without this, removing some packages can be quite tedious, since urpmi
provider will fallback on rpm and rpm support to remove only 1 rpm. This commit
permit to have a behavior similar to apt provider.
(#16792) Rename urpmi `uninstall` method to `purge`.

Since using `urpme` to remove packages will remove dependencies and thus
can be fairly destructive, it seems better to prefer the less
destructive option by default. Defining this method will allow urpmi to
purge packages and their dependencies if needed.
(maint) Remove convoluted confine from urpmi provider

Commit 49d8ef280 added a rather convoluted method for checking
suitability for the urpmi provider, without emitting errors. Since this
was released in 0.23.1 Puppet has developed better ways for checking
suitability, so this confine can be removed.
(maint) Improve urpmi error reporting

The urpmi package provider was ensuring that packages were actually
installed by querying the package after the install command was run. If
that failed an exception was raised, but didn't indicate that the
package was missing after said installation. This commit improves that
error reporting.
(maint)Add basic test coverage to urpmi package provider