(PUP-1177) allow parsedfile providers to choose a default mode

The ParsedFile provider baseclass and its companion Util::FileType module
employ Tempfile for pre-buffering generated files. If there is no actual
file at the final desination yet, copying the tempfile will preserve its
permissions, which implies a mode of 0600.

This is not desirable for all files managed by ParsedFile providers. Therefor,
the ParsedFile provider baseclass now provides an interface to change this
default mode by overriding a method.
(maint) move the file mode tests to the files spec module

It is helpful to have a simple helper method to match desired file modes
from spec tests.
(PUP-1177) make sure ssh_known_hosts is not created with mode 0600

The default mode for files that a ParsedFile provider newly creates
is 0600. This makes no sense for the ssh_known_hosts file, because it
contains public information that adds to security for all users.
(PUP-1177) update ParsedFile provider unit tests

The constructor for the :flat filetype accepts a second argument now.
This second argument must be taken into account when stubbing specific
invocations.
(PUP-1177) restore :ram FileType compatibility

The :ram filetype, as an alternative to :flat, is often used for spectests
of ParsedFile providers. The providers normally use the :flat type, but through
mocking, are made to use :ram in test context. Since the providers often pass
both supported arguments to the :flat constructor, it must be accepted by the
constructor of the :ram type as well.
(PUP-2869) Puppet should support HTTP proxy authentication

Without this patch it is not possible to use the Puppet Module
Tool (PMT) with an authenticated proxy.
Many enterprises utilise the services of authenticated proxies for
Internet access. Current code is able to utilise a proxy, but does
not consider credentials for authenticated proxies.
This patch uses the credentials from either the environment settings
for HTTP_PROXY or http_proxy, or the corresponding values in the
puppet.conf file.  The patch allows for http_proxy_user and
http_proxy_password to supplement the current http_proxy_host and
http_proxy_port variables within the puppet.conf.
(PUP-500) Translate acceptance tests to spec

These tests have nothing to do with the full application stack and are
only checking that the semantics of collections are correct. This
removes this acceptance test in favor of the existing integration spec
tests, which run about 100 times faster and many times more reliably.
(PUP-500) Test realize for realz

The realize() spec tests didn't really do much since they mocked out so
close to the function itself. This calls it in a manner that puts
resources in the catalog and checks that they are there.

The accpetance tests for the realize function are no longer needed.
(PUP-500) Increase coverage of collection queries

The tags and array handling of collection queries is "special". This
adds some test coverage around that behavior.
(PUP-500) Add coverage for +> on collection

The +> form of collection hadn't been covered in any test cases that I
could find. This adds some coverage.
(PUP-1283) Upgrade win32-service gem

This upgrades win32-service from 0.7.2 (native compiled gem) to
0.8.4 (FFI-ed gem), which is a step in getting puppet to run on x64
ruby.
(PUP-392) update win32-eventlog

This brings eventlog up to the latest gem and fixes the constants it uses.
(PUP-392) Upgrade win32-process

 - This upgrades the win32-process gem from 0.6.5 to 0.7.4.
 - Win32::Process wil not return a custom error anymore, just SystemCallError.
  Since this can be used for amny things, limit down SystemCallError to be
   rescued only if we are on Windows.
Merge pull request #2797 from beergeek/fix_auth_proxy_issue

(PUP-2869) Puppet should support HTTP proxy authentication
Merge pull request #2756 from ffrank/ticket/master/PUP-1177-sshkey-mode-600

(PUP-1177) make sure ssh_known_hosts is not created with mode 0600
(PUP-1283) Relax win32-service constraint

Previously we were requiring an exact version match for the win32-service
gem. However, the ffi version of the gem has a regression and we expect a
new version of the gem to be released soon.

This commit relaxes the dependency so that we don't have to revisit this
issue in the near future.
Merge branch 'pr/2828'

* pr/2828:
  (PUP-1283) Relax win32-service constraint
  (PUP-1283) Upgrade win32-service gem
(PUP-392) Upgrade win32-dir to 0.4.9

This upgrades win32-dir from 0.4.3 to 0.4.9 (for both platforms).
(PUP-1177) Use Puppet::FileSystem.chmod

Previously, the nagios spec test was using Ruby's File.chmod to set the
initial file mode, but checking the mode using Puppet's filesystem layer.

This commit ensures we use the filesystem layer when setting the initial
mode.
Merge branch 'pr/2830'

* pr/2830:
  (PUP-392) Upgrade win32-dir to 0.4.9
  (PUP-392) Upgrade win32-process
  (PUP-392) update win32-eventlog