Log BadRequest responses from elasticsearch

This lets us see the body of the response, which contains details of
what went wrong.
Merge pull request #261 from alphagov/log-elasticsearch-400s

Log BadRequest responses from elasticsearch
Add a parse_query_string helper

This uses Rack's KeySpaceConstrainedParams to get protection from
callers making requests with very large numbers of keys, but otherwise uses much
simpler logic than the normal query parsing.  Parameters are always
returned as lists of values, and square bracket special-syntax handling
is restricted to stripping off trailing "[]" from parameter names (so
that we support ruby clients which add that automatically for values
which are lists).
Don't require [] on unified_search parameter names

So that callers don't get a bad request error if they forget to use []
on some parameters, or if they use it on other parameters, strip off the
[] at the end of parameter names, and keep all values of parameters
passed to unified_search, presenting them as lists to the
SearchParameterParser.

This makes it easier to hand-construct queries, easier to call rummager
from languages other than Ruby, and should reduce the number of emails
we get from errbit due to incorrect use or omission of [] when
constructing parameters for calls to rummager.

Returns appropriate explanatory messages if parameters which should
occur at most once are repeated.

As a bonus, parameters such as "fields" or "debug" which take comma
separated lists of values can now be supplied in either that form, or as
repeated instances of the parameter.