CLC-4083 Split up UserCourses into 1 class per cacheable unit

https://jira.ets.berkeley.edu/jira/browse/CLC-4083

Please wait on green Bamboo: https://bamboo.ets.berkeley.edu/bamboo/browse/MYB-CLCMVPCHRIS5-1

I'll do a followup PR for QA if this is approved. 
Same question about the cache key, @ctweney