Fix regression when handling 200 error responses from S3

We now do not try to parse the error response unless it's an error
HTTP status code.  This means the handler needs to be updated such
that _it_ is the one that does the Error parsing.  Fortunately, we
don't need to fully parse the XML error response.  We just need to
know that the top level key is an Error node before saying we
need to retry the request.

cc @danielgtaylor @kyleknap