(PUP-1840) Add a digest_algorithm Puppet setting, defaulting to md5

Without this patch applied, Puppet only performs checksums of files
using the MD5 algorithm. MD5 is not available on hosts configured for
FIPS 140-2 compliance, so Puppet fails. This patch adds a setting,
settable in puppet.conf, whose name is digest_algorithm and whose
value can be any checksum type known to Puppet::Util::Checksums. The
setting indicates which digest algorithm should be used for performing
checksums. (This patch does not contain the code that pays attention
to the setting.) The value defaults to md5, so that if you do not set
this setting yourself, Puppet will act like it always has before.
(PUP-1840) Ease testing under different digest_algorithm settings

Without this patch, spec tests for pieces of the code having to do
with checksums would have to be duplicated twice and contain repeated
code.

The patch adds the `using_checksums_describe` and `using_checksums_it`
methods, which can be used instead of the `describe` and `it` methods
to enclose spec tests where checksums are involved. The methods are
only defined inside describe blocks where the `:uses_checksums =>
true` user metadata is given, to mitigate the risk of unintended
changes to the behavior of spec tests not having to do with checksums.

`using_checksums_it` defines a group of examples, each having the
given block as body. Each example happens with a different value set
for `digest_algorithm`. Many `let`s are defined for use inside the
spec test; foremost are `plaintext`, `checksum`, and
`algo`. `plaintext` is some text; `checksum` is the checksum for this
text under the present setting of `digest_algorithm`. `algo` contains
the name of the digest algorithm in use; if `digest_algorithm` is
unset, `algo` is 'md5'.
(PUP-1840) Use configured digest_algorithm as default checksum_type for file resources

Without this patch, file resources will always try to checksum
themselves using MD5. On FIPS 140-2 compliant hosts, this will
fail. This patch adds sha256 as a permissible value for the File
resource's checksum parameter, and makes the checksum parameter
default to using the digest_algorithm, as set in the puppet.conf.
(PUP-1840) Use configured digest_algorithm for file bucketing and fetching

Without this patch the filebucket works using MD5, which may fail on
FIPS 140-2 compliant hosts. This patch makes the filebucket use the
digest algorithm indicated by the digest_algorithm setting in
puppet.conf.