Add S3 server error detection and retry

Detect HTTP 5xx errors. Automatically retry them, and if that doesn't
work, throw an error.
More robust xml_request response parsing

Don't try to parse a response as XML unless it has an appropriate
Content-Type, and use XML::Simple->parse_string to avoid misbehavior
on non-XML content.

Added Content-Type headers to some tests to keep them happy with this
change in place.
Include "delete" in subresources for signature

The S3 documentation lists all the other subresources clearly, but
only mentions "delete" as an afterthought. Nevertheless, it must be
included in the signature just like all other subresources.
major rework on xml_request (breaks backward compat!)

 - Request data is now a keyword argument - not positional - to make
   room for more keyword arguments.

 - HTTP errors and XML errors are thrown as exceptions by default.
   This can be disabled with the "error_ok" argument.

 - The HTTP response code is no longer returned in the first position,
   since it's always going to be a success unless error_ok was set.
   Now the response data is first, and the raw response is second.

Also, update existing functions that use xml_request.
Support bucket create with location

We had everything in place to make this work, but the needed elements
weren't actually being passed to the request. Oops. Fix that and add
a test.

Also, remove the unimplemented "acl" option from docs for now.