Make the digest algorithm used for file checksums configurable

These changes add a `digest_algorithm` setting, settable in puppet.ini, and uses the algorithm indicated by it to perform checksums for file resources and file bucket operations. The `digest_algorithm` setting defaults to `md5` so that if it is not set, Puppet will still act the same as it always has.

Nothing clever is done in these changes to deal with what happens if Puppet was checksumming files using one algorithm, and you change the `digest_algorithm` setting, i.e. migration concerns.

Note that the patch to add the SHA-256 checksum type, from https://github.com/puppetlabs/puppet/pull/2451, is included in this pull request. It is a prerequisite for the configurable digest algorithm changes, because it adds the Puppet::Util::Checksums#known_checksum_types method.