(#22652) Parse query strings in rack w/o rack

Rack does not actually support parsing multiple valued query strings
into an array of values (see https://github.com/rack/rack/pull/519).
This is not going to be supported before rack 2.0, but we need this
behavior in order to not have to deal with YAML query parameters.

This changes the rack based query parameter parsing to use CGI.parse
instead of the built in rack semantics (which also has a large number of
other semantics, which we weren't using). As a note, it does not appear
that the behavior of rack's query parameter parsing is documented
anywhere.
(#22652) Restore rack parsing of POST body parameters

The first pass at the fix for #22652 fixed ignore handling by fixing
support for multi-valued parameters in a GET query_string (i.e. by returning
them as an array); however, it inadvertently broke parsing of parameters
in a POST body, e.g. as found in the catalog endpoint POST.

This patch addresses parameters in either case.  As a footnote however,
note that multi-valued parameters in a POST body (which we don't use) would not
return them as an array.

This patch also adds two specs tests, one to catch the issue in the first pass fix
(POST parameters not parsed), and one to flag the state of POST multi-valued param
parsing (does not return array).
(#22652) Add be_one_of matcher (copped from pcarlisle)
(#22652) Tighten up spec for multi-valued params in a POST body
(packaging) Update PUPPETVERSION for 3.3.1-rc2