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 guess this highlights a bigger concern: how do we know when to increment the version number of this API?

I wish I had a suite of tests that would fail if we needed to increment the API version number. If/when that happens, do we continue to support the old version? how do we do that if we are so closely tied to the details of the descriptor?

Perhaps we just say "backwards incompatible changes to descriptors are not acceptable". In fact, that may already be the case given the way they are used elsewhere (DB persistence etc). I suspect, however, that we have some kind of migration strategy for other parts of the system (like DB migrations).

@cpennington @ormsbee thoughts on this?