Expand s3 nosuchbucket error test response
S3: On non 20x response, defer closing until after building error

Fixes problems caused by closing the response body, then passing this closed body
to the XML unmarshaler in the error builder. This ignores returned errors, so the
failure to marshal is silently ignored, and the error returned is a blank s3.Error
S3: Correctly defer closing response body, unless nil