Allow for custom/private providers

If the provider name 'looks like' a URL, assume it is the Identity endpoint

'Looks like' means "contains ://"
Expose auth with a tenantName

The Identity API allows specification of the TenantName instead of TenantId,
and that is much more convenient for customer-facing stuff.
Support matching by type in the service catalog

The type is specified by the OpenStack APIs, the name is for humans.

Code should be matching by type, not by name.
Merge pull request #84 from justinsb/url_providers

Allow for custom/private providers
Merge pull request #85 from justinsb/match_service_by_type_not_name

Support matching by type in the service catalog
Merge pull request #83 from justinsb/specify_tenant_name

Expose auth with a tenantName