Add acceptance tests for the registry type

Without this patch there are no acceptance tests for the Puppet Labs
registry module.  This is a problem because we need to ensure the
registry_key and registry_value providers actually manage the registry
as expected.

This patch partially fixes the problem by adding a single acceptance
test.  This is a partial fix because I want to lay all of the groundwork
for additional acceptance tests first, then add additional tests in
subsequent patches.

This patch introduces a Ruby module named Systest::Util::Registry.  This
module is meant to be mixed into the eigenclass of a specific test case.
All of the helper methods will then be available to the test case
instance.

A single test case example is provided to help illustrate how to add
additional acceptance tests.  Please copy registry/should_pluginsync.rb
to additional files to create additional tests.
Add registry_key creation acceptance test

This patch adds an acceptance test to make sure that a registry_key
resource is created the first time puppet is run.  The test also makes
sure Puppet is idempotent by doing a second run and making sure the
created message is not in the output.
Fix cannot alias error when managing 32 and 64 bit versions of a key

Without this patch applied the Registry module is not able to manage
both the 32 and 64 bit copies of the same-named registry subkey.

The acceptance test accompanied by this patch illustrates this failure.
Without the change to the way keys are canonically named with the path
namevar the following error message is shown:

    err: Failed to apply catalog: Cannot alias \
      Registry_key[32:HKLM\Software\Vendor\PuppetLabsTest_tYEtHVZl\SubKey1]
      to
      ["hklm\\Software\\Vendor\\PuppetLabsTest_tYEtHVZl\\SubKey1"]

This patch fixes the error by playing the 32: substring prefix in the
canonical string path returned by the path parameter munging block.

TODO: Add a spec test.
Add Registry_key ensure => absent and purge_values coverage

This patch adds test coverage for the following two behaviors of the
Registry_key type:

 * The purge_values => true parameter.
 * The ensure => absent parameter.

The patch implements this by running a series of Puppet agent runs with
the same Puppet Master running.  The behavior is dependent on the
FACT_PHASE facter fact set by the harness using the environment option.
Memoize the filter_path method for performance

Josh pointed out we repeatedly parse the path given to the
RegistryValuePath and RegistryKeyPath class instances.  This is
concerning because of the number of regular expressions we perform in
the filtering of the input path.

This patch provides a small optimization that simply stores the result
of a filter_path method call and re-uses this result on any subsequent
calls.

This is a simple fix because the only want to "set" the input path is to
instantiate a new instance of the class, passing a new path to the
initializer.
Eliminate RegistryPathBas#(default?,valuename) from base class

Josh pointed out that the current implementation doesn't actually use
the RegistryPathBase#default? and RegistryPathBase#valuename instance
methods.  These methods are specific to the implementation of the
RegistryKeyPath or RegistryValuePath instances.

This patch simply removes the methods from the base class and adds them
explicitly to the ancestors to make it clear where the method being
called is defined any why it's there.
Merge pull request #12 from jeffmccune/maint/master/add_acceptance_tests

Add acceptance tests for the registry type