(PUP-3009) Add error handling to PMT module downloads

Before this PMT would not check if the module download request
succeeded before trying install the module. This causes informative
errors from forge to be hidden by an error about the checksum of the
download not matching. After this PMT will only move forward with module
installation if a 200 is received from forge otherwise it will display
the error returned by forge.
(maint) Dup frozen File content strings

Commit 2a9e996 froze all string tokens in the lexer as a performance
tweak. This caused a regression in file content behavior where

file { '/tmp/foo': content => stuff }

would fail with a 'Error: Could not set content on file: can't modify
frozen String' when using the future parser on Ruby 1.9.3 and up.  The
Ruby version requirement was because we force_encoding to ASCII_8BIT on
platforms (1.9.3 and up) which allow this, but you can't do that to a
frozen string.  This was failing in the lib/puppet/type/file/content.rb
should= method, where the string was cloned, but a clone() clones the
frozen state.

Other Types, including user defined types, may override should= or munge
and have similar problems, so we are adding a convert_String to the
runtime3_support to step around this problem.  This still leaves the
basic problem of mutation of strings within resource instances, but that
is pre-existing.
Merge pull request #2942 from jpartlow/maint/master/frozen-strings-breaking-file-type

(maint) Dup frozen File content strings
Merge pull request #2941 from adreyer/PUP-3009

(PUP-3009) Add error handling to PMT module downloads
Revert "(maint) Use public API when testing binary file #save"

This reverts commit 133c0b8009a48eef77d68c0bd8d5f79c930dab50.
Revert "Merge branch 'pull-2938'"

This reverts commit 1a428b92c900e84d9faa5d0aaa1a32f3c0b1d42b, reversing
changes made to cb26e23706b76e44544c14f4c921885f17dccbb3.
Merge branch 'revert/master/pup-2946-windows-specs'

We're getting spec failures on Windows running Ruby 2.0, we have to
revert this and try again so the build doesn't stay red.
(PUP-3019) Make PMT check for string status codes when downloading

Previously PMT was checking for integer status codes when downloading
modules. This results in all module downloads failing. After this PMT
will check for string status codes when downloading modules.
Merge pull request #2945 from adreyer/PUP-3019

(PUP-3019) Make PMT check for string status codes when downloading
(PUP-2040) .pmtignore and .gitignore for build

Prior to this commit there was no way for a module developer to specify files
that they want to ignore when building/packaging their module.

This commit adds the ability to specify files to ignore in a .pmtignore file,
located in the project root and using the same syntax as .gitignore, or if that
is not present, reading the .gitignore file and using that.
(PUP-2040) .pmtignore spec tests

Adding spec tests to cover build when .pmtignore/.gitignore files are present/absent