(maint) Don't try to invoke a constant as a method

While methods on constants can be invoked with the scope resolution
operator, EG `SemVer::valid?`, the reverse isn't true for retrieving
constants. This fixes the lookup of the SemVer::MIN constant.
Fix faulty test for Puppet::Pops::Parser::Parser

The reference to Model was unqualified which caused an "uninitalized
constant Model" failure when running rspec explicitly on the
spec/unit/pops/parser package. This commit adds the needed
qualification.
Merge pull request #1736 from thallgren/master

Fix faulty test for Puppet::Pops::Parser::Parser
(#20607) Fix mode test on windows

File.stat on MRI ruby on windows can only distinguish between readable and
readonly files (0644 vs 0444), causing the test to fail, since it's
expecting 0664.

This commit updates the test to use Puppet's Security.get_mode method on
Windows, which preserves the file mode fidelity.

It also removes the expect { .. }.to_not raise_error, since we can just
execute the statement. Also made sure we actually fail due to an invalid
file mode, and not some other error.
Merge pull request #1685 from adrienthebo/maint-constant_lookup

(maint) Don't try to invoke a constant as a method
(#21427) Parse WEBrick multi valued params

We had previously converted to trying to parse the query string
directly, because it looked like WEBrick didn't handle multivalued
parameters. This had the effect of not being able to deal with POST
parameters correctly. After investigating WEBrick some more, it turns
out that it actually does support multivalued parameters, but that is
fairly hidden if you just look at the value returned from #query. The
WEBrick::HTTPRequest#query method actually returns a Hash{String,
FormData}. FormData is a subclass of String and adds a linked list of
Strings, which is used to represent the multiple values. Because it is a
subclass of String, it isn't clear what you are dealing with unless you
specifically look at the class that you have. It also looks like a
string because its #to_s returns the head of the linked list.

This changes the #params method for webrick to understand this structure
and correctly return multivalued parameters as individual strings or an
array of strings.
(#21427) Fix Puppet::Run pson implementation

The pson format for Puppet::Run did not include the status, which caused the
kick command to display an error.
(#21427) Unescape values when decoding facts

When puppet sends facts to the master it doubly encodes the data
structure. This happens because both the facts_handler encodes that
serialized facts and the http request functionality encodes the value
again for the query string. Although this happens, the compiler, when
deserializing the facts does not decode the data. This is because
decoding was handled by decode_params, although it never should have
been (the underlying library already has decoded the data), which
disguised this problem.

This changes the compiler to unescape the data that it gets to be
symmetric with the fact sending code.
Merge pull request #1739 from zaphod42/issue/master/21427-fix-param-reading-in-webrick

(#21427) Properly deal with facts again
Merge pull request #1742 from pcarlisle/ticket/21427/run-fix

(#21427) Fix Puppet::Run pson implementation