Always return *ResponseError in NewReesponseError

Previously it could happen that the response body can't be decoded and the
return error is a different type from *ResponseError. This causes downstream
usage to handle different types of errors.

The solution is to always return *ResponseError and make the decoding error as
part of the *ResponseError.