Implement S3 REST authentication
Allow one to supply method, path via more means
Refactor parse_response to improve DRY-ness
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.