Add edX OAuth2 provider with OpenID Connect support

So for edX staff (someone with `is_staff=True`), this would return a list of all courses? If so, I am a little concerned about the scaling aspects of this.

The general approach of instantiating every `CourseDescriptor` in the system to ask where the user stands with respect to them is also troubling, but I understand that reworking `access.py` is definitely out of scope.