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 
I think there is a significant difference between the value of a "name" field being changed from "foobar" to NULL, and the "name" field being renamed to "full_name" or something.

In the first case I would expect the API to return NULL, in the second I would expect a stable API to return "foobar" when I asked for "name", even though the field had been renamed to "full_name" in the underlying data structure.

APIs like segment.io jump through some significant hoops to keep their output format stable, including the data under both the new and old names (for example), while people transition their clients over to the new name. Once the old name has been deprecated for some period of time it is removed.

That said, if we don't need this level of stability / predictability, then these types of strategies just introduce a lot of unnecessary complexity.