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 may have misunderstood what you wanted. The depth argument just prefetches. It doesn't cause the caller to get anything different. It reduces db roundtrips.

After getting a module, call module.get_children() to get its children (recursively). If they're prefetched, it won't cause another db hit.