Change transport JSON handling

Transport.request() was using a new attribute in a not-yet-released
version of requests (Response.is_redirect).  It skipped the JSON decode
for redirect responses which is really not what we want anyway.
Instead raise InvalidResponse on JSON decode error when JSON is expected.

All tests needed updating to properly handle the JSON default in Transport.
Is that the right default at the transport level?

The tests for redirects have been duplicated for both JSON and text
responses.

Change-Id: I9dd91ec3d803bf5cc0c12b8f10c1d9b7c6f28dcf
Merge "Change transport JSON handling"