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.
Merge branch 'specify_tenant_name'