Add edX OAuth2 provider with OpenID Connect support

They don't have to be invariant as far as I know. For example a user may change its `email`, or its `preferred_username`, and those claims can be included in the id_token.