Fix portage-provider so that packages with keywords can be installed

This patch removes the --stable restriction from the portage provider,
which made the installation of packages with keyword-restrictions impossible.
By superimposing this restriction the provider broke in many installations
and thus rendered puppet unusable for systems that relied on packages with
keyword-restrictions. This applies for example to all packages provided by
overlays.
This fix puts the administrator back into the responsibility to decide which
packages he/she wants to install.
Add tests for gentoo provider
(#18187) Clear *root* environment when clearing caches

When changing settings or initializing Puppet via TestHelper, the
Puppet::Node::Environment.clear method is called to delete the cached
environment objects, as they may reference cached module paths based on old
values of settings.

The *root* environment is a special case, as it acts as the current environment
when no other environment has been created and set yet.  It can still have a
module path based on current settings, so it too should be cleared along with
other cached environments.

Failure to reinitialize *root* causes failures when initializing Puppet via the
TestHelper.  The Puppet::MetaType::Manager class uses the current environment
in calls to Puppet::Util::Autoload, which starts as the default *root*
enviroment.  The type loader is called a few times during TestHelper
initialization and so if the module path is then changed (which triggers a
.clear call), the *root* environment will contain paths based on old settings,
so types won't load.

Loading types based on the environment is new in 8173a6e6 (2.7.19).  3.x is
unaffected as caching of module paths doesn't begin until
app_defaults_initialized? changes to true.
Merge branch 'pull-1339' into 3.1.x

GH-1339 corrects the behavior of Puppet::Node::Environment.clear when dealing
with the *root* environment and improves the related test coverage. It was
originally targeted at the 2.7.x but as of 2013-02-05 only fixes for major
issues will be merged into 2.7.x. Since this improves the quality of the code
this has been merged into 3.1.x.
Updating module tool acceptance tests with new expectations.
Merge branch 'pvande-2.7.x' into 2.7.x

* pvande-2.7.x:
  Updating module tool acceptance tests with new expectations.
Merge branch '2.7.x' into 3.0.x

* 2.7.x:
  Updating module tool acceptance tests with new expectations.
Merge branch '3.0.x' into 3.1.x

* 3.0.x:
  Updating module tool acceptance tests with new expectations.
Merge branch 'pull-1403' into 3.1.x
Fix module tool acceptance test

This test was failing due to a change on the forge server when rendering
the description for a module.

This commit changes the test to expect UNKNOWN for the description.
Merge remote-tracking branch 'upstream/2.7.x' into 3.0.x

* upstream/2.7.x:
  Fix module tool acceptance test
Merge remote-tracking branch 'upstream/3.0.x' into 3.1.x

* upstream/3.0.x:
  Fix module tool acceptance test
Revert "Merge branch 'pull-1339' into 3.1.x"

This reverts commit 7bd6a908a82b0502558564d32a7fa604cee3c5a3, reversing
changes made to 480379d1f61d88e732bd10d6773845a788351ed3.

This commit seems to be the cause of acceptance test failures so I'm
backing this out until we get that cleared up.
Merge branch 'revert-1339' into 3.1.x
Revert "Merge branch 'revert-1339' into 3.1.x"

This reverts commit 8bb17056419168ba7f39f45a1895bc0a67b1ea67, reversing
changes made to 89b5c9b26c5c1e30155e9af2eb8bafc605d7dafe.