Fix a bug in S3RestAuth canonicalized resource generation
Refactor ServerError generation

This change puts BaseService in charge of generating ServiceErrors
similar to the way it generates ClientErrors.  Errors *are* generated by
redirects that requests does not handle; if handling them is desirable,
requests should implement handle_server_error.