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 
The modulestore needs the user object to determine what to retrieve. I'm not certain why `user.known` needs to be set. It doesn't seem to be necessary, so I am removing this method; however, I suspect it may need to be restored as the original API is further ported over.