AWS | storage: use #service instead of the deprecated #connection in the tests
AWS | storage: add tests for directory#public_url
AWS | storage: add more uniq_id in the tests to avoid collisions
AWS | storage: disabling broken tests
AWS | storage: make directory.persisted? tell the truth

directory.persisted? was relying on the directory having a key which is almost
always true and not related to storage anyways.
AWS | storage: fixes ignored location with new buckets

When creating a new directory the location wasn't forwarded properly.

Something like the following is now working as expected (see limitation below):

    Fog::Storage[:aws].directories.create(key: 'bucket', location: 'us-west-1')

It also changes the following behaviour: when no location is specified new
buckets are explicitly created in the same region as the service connection.

Known limitations:

Fog::AWS::Directory instance don't use their location to connect to S3.

If you're using an AWS::Storage with a region different than us-east-1 you
can only create buckets in the same region.
AWS | storage: big refactor

Logics have been centralised:

* region to hostname
* url generation
* signature
* chaning scheme also changes the port

During the process a couple of inconsistencies have also
been fixed.

Known limitations:

When using the @endpoint with a custom port you need to specify the port
when using get_object_http_url or get_object_https_url.

When using bucket names that contain dots outside of us-east-1 make sure to
access it with the same region in your AWS::Storage.