(#19090) Fixup failing windows spec tests

Without this patch applied the spec examples are failing on windows.
The root cause of this problem is that the Etc module does not respond
to the `gid` method.

This patch addresses the problem by extending the rescue block to catch
NoMethodError exceptions in addition to the ArgumentError exceptions
that were already being caught.

References: [Build #634 (Mar 4, 2013 10:01:31
AM)](http://links.puppetlabs.com/win_19090_spec)
(#19558) Add resource and manifest context to type validation failures

When a resource fails validation with a validate method defined at the type
level (rather than individual parameters), provide additional context with the
resource name, manifest file and line number.
(#19558) Add manifest file/line to parameter validation failures

For consistency, provide manifest file and line number in the error message
when a parameter fails to validate.
(#19558) Only catch Puppet::Error and ArgumentError when validating parameters

Parameter validation methods are expected to only throw Puppet::Error
derivatives (i.e. via the fail() method) or ArgumentErrors, so specifically
catch these.
(Maint) Fix assertion about module tool output

Commit b48402229adcd11b9f1293725f74703670f346c5 changed the output of
the module tool so that it matched the options that is actually has. The
acceptance test, however, was not updated at the same time. This updates
the relevant tests to include the updated text.
Always read request body when using Rack

In certain versions of Passenger (all of them), leaving the request body
unread will cause an EPIPE exception inside Passenger, resulting in a
500 response. This is because Passenger makes a blocking write of the
request body to the application (Puppet). If we respond without reading
the body, this write is interrupted, which isn't handled properly by
Passenger. So when processing requests, we make sure to have always read
at least 1 character, which unblocks the write and lets Passenger
continue.

This issue is not present in other HTTP handlers.

https://code.google.com/p/phusion-passenger/issues/detail?id=471

Paired-With: Josh Cooper <josh@puppetlabs.com>
Fix order-dependent test failure in rest_authconfig_spec

This test was assuming the RestAuthConfig singleton hadn't been created.
A previous test does create one, so this test was failing. Now, we make
sure the singleton instance is nil before testing.
Always read request body when using Rack

In certain versions of Passenger (all of them), leaving the request body
unread will cause an EPIPE exception inside Passenger, resulting in a
500 response. This is because Passenger makes a blocking write of the
request body to the application (Puppet). If we respond without reading
the body, this write is interrupted, which isn't handled properly by
Passenger. So when processing requests, we make sure to have always read
at least 1 character, which unblocks the write and lets Passenger
continue.

This issue is not present in other HTTP handlers.

https://code.google.com/p/phusion-passenger/issues/detail?id=471

Paired-With: Josh Cooper <josh@puppetlabs.com>
Merge branch 'domcleal-tickets/master/19558-validation-errors'

* domcleal-tickets/master/19558-validation-errors:
  (#19558) Only catch Puppet::Error and ArgumentError when validating parameters
  (#19558) Add manifest file/line to parameter validation failures
  (#19558) Add resource and manifest context to type validation failures
  (maint) Add YARD to Puppet::Util::Errors
(#19558) Fix acceptance test failure

Without this patch applied the commit in 38ef0c5 causes a behavior
change in the way error messages are formatted that fail to pass through
the regular expression used in our Solaris 10 acceptance test suite.

This patch addresses the problem by updating the regular expression to
match the error message produced by the current behavior of the system.
Fix order-dependent test failure in network/authorization_spec

This test was assuming the singleton auth config hadn't been created. A
previous test does create one, so this test was failing. Now, we make
sure the singleton instance is nil before testing.
Separate tests for same CVEs into separate files

fail tests instead of erroring when we know its a failure
Separate tests for same CVEs into separate files

fail tests instead of erroring when we know its a failure
Run openssl from windows when trying to downgrade master

The test assumed the `agents` array always contained a non-Windows host,
which isn't always true. It also didn't take into account that the path
for cert, key, etc contain spaces.
Remove unnecessary rubygems require

Previously, the test was failing on our rhel6 box which serves as the
master for Windows acceptance tests due rubygems not being
installed. Since we don't actually need rubygems to load openssl, it's
safe to remove that line from the rogue sslserver script.
Don't assume puppetbindir is defined

The host variable `puppetbindir` is undefined on FOSS windows (unlike
Unix), so this test was failing on Windows when trying to execute
`/ruby`. This is really a bug in the harness as the eventlog
acceptance test open-codes this logic as well.

This commit changes it to fallback to `ruby`. It also simplifies the
logic for detecting whether an agent supports SSLv2.
Display SSL messages so we can match our regex

On rhel6, `openssl s_client` doesn't display the SSL messages that we
are trying to match, e.g. SERVER-HELLO. The `-msg` option must be used
for them to be displayed.
Don't require openssl client to return 0 on failure

Previously, the test assumed openssl s_client would return 0 when the
master rejected the SSLv2 connection, which is a bit odd.

This commit ignores the exit code when determining if the passed passed
or failed, and instead requires that a CLIENT-HELLO message be present,
and a SERVER-HELLO message is absent.
Don't assume master supports SSLv2

Previously, the test tried to create an SSLv2 rogue master, and then
check each agent's suitability (as to whether it's ruby supports SSLv2).
But this fails on precise, as its ruby does not support SSLv2.
Specifically the call to ssl_version = 'SSLv2' raises an exception.

Since there is nothing special about the master, we just need to run a
ruby process, this commit moves the rogue ssl server to the agent
itself, and only those agents where SSLv2 is available.

Since the agent may also be a master, it changes the rogue server's
accept port from 8140 to 8150.
Merge pull request #29 from puppetlabs/cooper/2.7.20/oranges

Acceptance test improvements