(Maint) Add type documentation

Previously, running `puppet resource registry_key` or `puppet resource
registry_value` only contained documentation for the parmeters, but not
the types themselves.

Also, some of the parameter documentation lines were too long and
wrapping, but then breaking after the first word on the next line.

This commit adds documentation for the types and updates formatting
for some of the parameters.
Merge pull request #15 from joshcooper/docs

(Maint) Add type documentation
Update README.markdown
Update README.markdown
(#14529) Add registry::value defined type

Without this patch we don't have an easy to use way to abstract away the
management of a value and the key it's in.

This patch fixes the problem by creating a new defined resource type in
Puppet that builds on top of the native `registry_key` and
`registry_value` resource types.

This registry::value type allows the user to manage values without
worrying about also managing the key the value exists in.  For example:

    registry::value { 'MyAPP - Owner Email':
      key   => 'HKLM\Software\Puppet Labs',
      value => 'Owner Email',
      data  => 'jeff@puppetlabs.com',
    }

This resource will automatically manage the parent key if it does not
exist and manage the value.  The key and value will be created in the
native architecture of the hive.  That is to say, the 64 bit hive on a
64 bit system and the 32 bit hive on a 32 bit system.
Merge pull request #16 from jeffmccune/ticket/master/14529_defined_type

(#14529) Add registry::value defined type
Add gitignore
Update Modulefile, CHANGELOG for 0.1.0 release
(#14572) Fix management of the default value

Without this patch applied the default value of a registry key is not
properly managed by Puppet.

The root cause is that the munge operation of the registry_value type
causes the trailing slash to be stripped off when stored in the
parameter value of the resource.

This, in turn, caused the provider to behave as if it was managing a
normal value rather than a default value.

This patch fixes the problem by changing the munge method.  Munging the
path of a default value preserves the trailing slash with this patch
applied.  This causes the provider to treat the value as a default value
rather than a normal value.

A new method, RegistryPath#aliases returns an array of alases a given
Key or Value resource should create in the catalog given a path.  This
makes it easier to match up aliases created in the munge block with
aliases referenced in the autorequire block.

Finally, the type of path used in the autorequire block is changed from
RegistryKeyPath to RegistryValuePath.  Without this change a default
value would skip over the parent key since the instance parsed it as a
path and not a key.

The spec tests are updated by this patch to pass a catalog instance to
the initializer whenever creating an instance of
Puppet::Type.type(:registry_{value,key})  This is required when
declaring aliases from the munge method.
(#14517) Improve error handling when writing values

Without this patch applied if Puppet tries to write a registry value
into a parent key that does not exist the following error message is
returned to the user:

    Could not evaluate: The system cannot find the file specified.

This is a poor error message because we're not talking about files but
instead registry keys.

This patch fixes the problem by catching the exception, testing the
message against "cannot find" and augmenting the error message to be
more helpful before re-raising it.

In the event we don't know why the exception was raised, we augment the
message with "Unexpected exception from Win32 API..." and include the
detail.
(maint) Adjust inline code comments

This patch is a no-op that simply adjusts some of the code comments.  It
removes a method that has been commented out for some time now and
leaves a comment about the behavior of flush.
Merge branch 'ticket/master/14572_registry_-_default_values_are_broken' of github.com:jeffmccune/puppetlabs-registry

* 'ticket/master/14572_registry_-_default_values_are_broken' of github.com:jeffmccune/puppetlabs-registry:
  (maint) Adjust inline code comments
  (#14517) Improve error handling when writing values
  (#14572) Fix management of the default value
Update Modulefile, CHANGELOG for 0.1.1 release
(maint) Fix typo causing specs to fail in 1.9.3p125

Without this patch there are two minor typographical errors in the
registry_key and registry_value Type spec tests.

This patch corrects the typo and gets the spec tests passing on
1.9.3p125.
Merge branch 'maint/master/fix_spec_failures_in_193'

* maint/master/fix_spec_failures_in_193:
  (maint) Fix typo causing specs to fail in 1.9.3p125
(#14149) Move utility code to puppet_x convention

This patch is a simple rename only change in preparation for the real
patch of migrating Puppet::Modules::Registry to
PuppetX::Puppetlabs::Registry
(#14149) Refactor utility code into PuppetX namespace

Without this patch the registry module is a bad example for contributors
and module authors because it does not follow the PuppetX convention
described at Puppet Design Guidelines [1]

This patch fixes the problem by moving all of the utility code and
mix-in modules from Puppet::Modules::Registry to
PuppetX::Puppetlabs::Registry namespace.

In addition, the loading code (require statements) have been modified to
assume #7788 (rubygems support) is implemented.  In the scenario where
7788 is not yet implemented we fall back to the work around of requiring
fully qualified paths to operate with pluginsync as described in #14073.

[1] http://projects.puppetlabs.com/projects/puppet/wiki/Puppet_Design_Guidelines
Merge pull request #18 from jeffmccune/maint/master/use_puppet_x_convention

(#14149) Refactor utility code into PuppetX namespace
(Maint) Fix unhandled exception working around #4248

Without this patch applied the Puppet master will error out because of
an uncaught exception trying to load utility code.  This is a problem
because the registry types and providers cause catalog compilation to
fail.

The root cause of this problem is that require without an exception
class will default to a behavior that does not catch LoadError
exceptions.

This patch fixes the problem by explicitly catching LoadError and
re-raising if the work-around fails.
Merge branch 'fix/master/14149_fix_exception_handler'

* fix/master/14149_fix_exception_handler:
  (Maint) Fix unhandled exception working around #4248

Paired-with: Andrew Parker <andy@puppetlabs.com>