This small match had a surprising number of issues...
Even though we're testing returning 'text/plain' when 'text/html' is
specified, it turns out the accept headers real browsers send actually
specify "*/*;q=0.8" which means that unmatched types will be given the
same, lower weight.
This means in the extant code, the best_match() for a normal browser
request (without 'text/plain') will think that 'application/json' and
'text/plain' are the same preference, and will take the first in the
list, which happens to be 'application/json'. The result is that
*real* webrowsers are getting back json, when we wanted them to get a
human readable result.
Also, in the mean time webob has a new accept handling model, and
best_match() is deprecated anyway. Update the requirements to the
latest WebOb (new handling was added in 1.8.0, 1.8.1 is a bugfix)
So now we use the new API, and list 'text/html' as an acceptable
offer, which ensures it will be chosen if a browser is requesting
things. It still returns a text/plain table.
A check for this is added to the test suite. Also a bug with setting
the headers after the request is fixed, which went unnoticed because
of the prior default behaviour.
Change-Id: I84094ca67b16ce9246507aa0010646ffc3e9dbff