Preserve HTTP client error in Do

Previously, if the underlying *http.Client's Do method returned an
error, API client library callers could not access it. This prevented
them from accessing, e.g., sentinel error values from the HTTP
client's CheckRedirect func.