(#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.