This commit adds support for OAuth access token based credentials.

A notable distinction from other kinds of credentials is that OAuth credentials take an OAuthScopeRequirement argument for providing credentials, due to the inherently scoped nature of OAuth tokens.

This commit also adds support for DomainRequirement discovery via @RequiresDomain and the DomainRequirementProvider extension point.

See DescribableDomainRequirementProvider for an example implementation of such a provider.