Courses API

This is a subset of #6109. The goal here is to trim the code down to exactly what will be needed by Insights and get it merged soon. We will revisit the other APIs soon after so that the edx-solutions fork isn't too divergent.

@mulby @mattdrayer @cpennington @ormsbee @dsjen @smagoun @shnayder @mikigoyal 
As far as code duplication goes, I really don't see much of a difference between setting permission_classes in four places vs. inheriting from a subclass in four different places. The one advantage to using inheritance is that we can update many views at once by updating one mixin class. However, I still don't like `PermissionMixin` because it implies that it is the sole permission mixin that should be used everywhere, which is currently is definitely not. If we were to give it a name more tailored to its purpose, then we lose the sole advantage of inheritance, because we would end up wanting to change the class name upon changing its content.