(Maint) Remove stubbing from query_string tests

The tests for the Puppet::Indirector::Request#query_string method were
relying on stubbing methods on the class under test. There is no need
for that since the required data is trivially passed in via the
constructor. This replaces the stubbing with simply constructing the
correct object to test.
(Maint) Test that the query string is parsable

Rather than relying on all sorts of string checks, it is better to check
that a parameter parsing library is able to parse the generated string
back into the expected data. This changes the tests to use CGI::parse to
parse the query_string and then can check that the resulting hash has
the data that is expected.
(#21427) Do not send arrays as YAML in query params

Previously, when the REST requests were constructed and one of the
parameters was an Array, the Array was encoded as YAML and then
identified on the master and parsed as YAML. This was used specifically
to send the list of "ignores" when making file metadata requests.

This changes the system to now use multi-valued query parameters instead
of YAML. Both the agent and master have been updated to support this,
however existing masters will not be able to understand the new requests
correctly since they will either:

  * in webrick only choose the first value as the value of the parameter
  * in rack fail because the decode_params method does not understand
    arrays as values