Automatically decode JSON responses based on Content-type

This change addresses a shortcoming of the current JSON handling: it doesn't seem to be possible to send a non-JSON request while accepting a JSON response, or vice-versa.  I've made it so that responses will always be parsed as JSON if the response `Content-type` header is `application/json`.

Do we need more options here?  Should I try to rework the JSON handling further?