Use virtual-hosted style addressing for S3 whenever possible.

This proposed set of changes would allow botocore to use virtual-hosted style addressing for S3 whenever possible.  Using this style avoids the 301 redirect errors but it's only possible if the bucket name complies with the DNS name restrictions.

I'm not entirely happy with this.  It's kind of ugly.  This could also be done as an event handler but we would have to emit another event just before the auth is added and I'm not sure we want that overhead.

Comments appreciated.