Add edX OAuth2 provider with OpenID Connect support

It is really up to the implementation. The core OIDC specification lets the client specify what goes in `id_token` and what goes in `user_info` (if the provider authorizes it), but we don't support that yet. The only twist is that our `user_info` does support specifying what fields should be returned, and that is not in the specification, but at least to me it seems to be compatible (and useful).