Allow passing extra options to the execute

In order to allow the macports execution to have the normally not
allowed HOME environment variable the Provider.commands() method has
been extended to allow specifying the options to pass through to the
execute call
Added doc of the command parameter
Simple complete command wrapper for providers

Will be used for keeping track of commands registered in providers.
Puppet::Provider constructs Command objects

Delegation to a command object to handle executing a command.
Deprecated make_command_methods

This is a private method that should not be exposed.
Delegate all commands to Puppet::Provider::Command

Command execution for providers is now all coerced into
Puppet::Provider::Command.
Documented commands
Unit test for Puppet::Provider dsl
Added unit tests for Provider command DSL

Testing the command method creation, invocation of the command and
effect on the suitability of the provider.
Added tests around suitability of provider
Moved Puppet::Provider::Command

It had been created in the wrong place. Moving to the right location
Allow definition of commands via a dsl

Allows definition of single commands and specifying more specific things
about how they should be executed (such as environment variables to have
set)
Cleanup of internals

Moved around parameters to Puppet::Provider::Command and cleaned up the
interface to the CommandDefiner sub-language of the Puppet::Provider so
that using it is a little simpler to read.
Deprecation points to has_command for substitute
(#13435) Change default signing digest algorithm

Change the default digest algorithm away from MD5

This commit is one step along the way to FIPS 140-2 compliance (#8120).
In a FIPS 140-2 environment, MD5 is not available. Older versions of
Ruby (1.8.7, 1.9.2) will SIGABRT when trying to use MD5 because they
don't properly check the return code from openssl.

Because the fingerprints between agent and master aren't
machine-verified and `puppet cert list --digest <digest>` supports any
of the digests, this commit is backwards and forwards compatibile.

Later portions of #8120 will make the default digest algorithm
configurable.
Removed text/marshal support

Removing text/marshal support in order to close the security
vulnerability described in Bug #13552.
Fix for bucket_path security vulnerability

This is a fix for Bugs #13553, #13418, #13511. The bucket_path parameter
allowed control over where the filebucket will try to read and write to.
The only place available to stop this parameter is in the resolution
from a URI to an indirectory terminus. The bucket_path is used
internally for local filebuckets and so cannot be removed completely
without a larger change to the design.

Conflicts:

	lib/puppet/network/http/api/v1.rb
	spec/unit/network/http/api/v1_spec.rb

Conflicts resolved by modifying the patch to fit the use of
Puppet::Indirector::Request in the code.
(#13260) Use mktmpdir when downloading packages

This fixes a security vulnerability in the appdmg and pkgdmg providers where
they would curl packages directly into /tmp and the install them, allowing an
attacker to craft a symlink and overwrite arbitrary files or install arbitrary
packages.

Conflicts:

	lib/puppet/provider/package/appdmg.rb
	lib/puppet/provider/package/pkgdmg.rb
Refactor pkgdmg specs

Refactor to a more current spec style. Several of these specs didn't actually
test anything. They have either been deleted or made more specific.

Conflicts:

	lib/puppet/provider/package/pkgdmg.rb
(#13260) Spec test to verify that mktmpdir is used