(#PUP-1046) Add spec test for skeleton for generated modules

This patch adds a simple spec test to ensure that by including the
class with default values for all the parameters, that the class is
contained within the catalog.
(#FORGE-38) Add Rakefile to skeleton for generated modules

This patch adds a simple Rakefile that provides rake tasks `lint` for
puppet-lint, `validate` for validation of manifests, templates, and ruby
files, and the tasks provided by the puppetlabs_spec_helper.
(PUP-1586) allow managing existing cronjobs without caring for command

When the catalog contains a cron resource that does not specify a value
for the command property, the transaction would fail with the cryptic
error message 'no command, somehow' under certain conditions.

This error is spurious. Generally, it's quite allowable to manage a subset
of cron properties that does not include the command. Fixed by removing
the devfail invocation. The command property is now handled just like
the 'special' property.
(PUP-1586) remove obsolete unit test

The cron type unit test titled "it should require a command when adding
a new entry" did not quite do what it said. What it actually tested was
that the type would raise an exception when an empty command should-value
was accessed.

This can be safely removed, as PUP-1587 will implement a more sensible
protection against the creation of cronjobs that lack a command, including
a working integration test.
(PUP-1587) crontab: make sure that invalid crontabs aren't written out

It is permissible to manage cron entries and not manage the command
property. However, if the entry doesn't exist on the target system yet,
puppet should not try to create it.

In other words, a cron resource without a should value for the command
property can only be synced to a valid state if the corresponding resource
on the target system has a valid command value already.

cron { "foo": minute => 1 }

is alright with an existing crontab of

 # Puppet Name: foo
 * * * * * /some/command

but not with a crontab not yet containing the entry named 'foo'.

This change prevents the sync operation in the error scenario.
(maint) Use git mirrors for puppet/hiera/facter installation

The git server and fork used to construct git urls for installation
projects via beaker was previously hard set to be github.com and
puppetlabs.  While we continue to default to these values, this commit
allows them to be set globally or per installed project via environment
variables so that we can take advantage of internal and local git
mirrors and daemons.
(PUP-1840) Add an sha256 checksum type to Puppet::Util::Checksums

Without this patch applied, Puppet doesn't know how to perform
checksums of files using the SHA-256 algorithm. This precludes Puppet
from being useful on hosts configured for compliance with U.S. Federal
Information Processing Standard (FIPS) 140-2.

The SHA-2 family of algorithms is recommended for use by the
U.S. National Institute of Standards and Technology (NIST) in FIPS
140-2; SHA-256 is the algorithm from this family having the shortest
output.

This patch makes SHA-256 available for use as a checksum algorithm by
other parts of Puppet, alongside MD5 and SHA-1.
(maint) Improve tests to check actual logging

The previous tests didn't actually make sure that the diff was logged.
This adds that coverage as well as checking that the log is at the
correct level.
(PUP-2033) Use loglevel for diff output

This brings the same changes made to the file type for PUP-1846 to the
augeas provider's diffing logic. If a loglevel is specified on the
resource then the diff will be logged at that level. If it is left off,
then the diff will be logged at the notice level.
(PUP-1937) Calling 'ruby' on Windows Fails for PE

The 'ruby' executable does not exist on a PE installation. Instead, the
real name is 'ruby.exe' and it is located within the PE installation
directory. This commit includes a new method (ruby_cmd) in WindowsUtil
for finding the correct executable name and fixes three tests that call
'ruby' directly on Windows.
Merge branch 'stable'
Merge remote-tracking branch 'jaredjennings/fix/master/add-sha256-20140319'
(PUP-1332) Add instantiated upstart services to exclude list

Previously puppet would fail when trying to list all services because some
services require parameters for status queries to succeed. These include
idmapd-mounting and startpar-bridge. This commit adds those services to the
exclude list so that they are ignored when querying upstart for their status.
Merge pull request #2475 from haus/ticket/master/pup_1332_add_more_upstart_services_to_excludes

(PUP-1332) Add instantiated upstart services to exclude list
Merge pull request #2253 from ghoneycutt/PUP1046_module_generate_skeleton_spec_test

(#PUP-1046) Add spec test for skeleton for generated modules
(PUP-2039) Fix rpm package provider usage of --whatprovides.

The fix for PUP-897 (commit ecb761e24a) introduced always passing
--whatprovides to rpm when querying for packages. This breaks querying
for packages that have architectures specified, e.g.
'vim-enhanced.x86_64'.

The proper way to do this is to first query without --whatprovides and
see if rpm finds a package by the given name.  If rpm fails to find a
package, fallback to using --whatprovides to support querying for
virtual package names.
Merge pull request #2254 from ghoneycutt/FORGE38_module_generate_skeleton_rakefile

(PUP-2045) (FORGE-38) Add Rakefile to skeleton for generated modules
Merge pull request #2469 from zaphod42/feature/master/pup-2033-augeas-show-diff

(PUP-2033) Use loglevel for diff output
Merge pull request #2428 from jpartlow/maint/stable/acceptance-gitmirror

(maint) Use git mirrors for puppet/hiera/facter installation
Merge branch 'stable'

* stable:
  (maint) Use git mirrors for puppet/hiera/facter installation