Move NormalizeURL to the root package.
Turn v2 EndpointURL into a ServiceCatalog method.
Let's expose it in openstack/ instead.

I can't move endpoint location into a method on anything in identity v3, so for symmetry
I'm keeping them in the openstack/ provider directory. I will export them, though, so I
can call them in rackspace/.
Move V3 endpoint location, too.
Remove APIKey authentication from openstack/.
Export and rename the CreateURL function.
Delegate to OS for Rackspace Identity.

But handle the APIKey authentication manually, first.
Apply the OptsBuilder interface to tokens.Create()
Override request body generation for API keys.
Client creation and auth for Rackspace.

Mostly copy-paste. I managed to re-use the endpoint extraction, so that's something.
Coverage for V2EndpointURL.
More endpoint_location coverage.
Add a quick unit test for authentication.
Acceptance test for authing a Rackspace client.
Default the endpoint in rackspace.NewClient().
Explicit AuthenticateV2 function.
Open up the Pager struct a little.
Override the List call without reimplementing.
Delegates and unit tests for identity/extensions.
Refactor os/identity/v2/tenants fixtures.