Caching system using HTTPCache, currently lazy caches courses

Currently there is one method, CourseInformationFor(Guid classTimeId) which allows you to find all the course info associated with one classTime (which otherwise is quite a few joins).  This will now load from the cache or lazy populate the cache on retrieval.

In production, we will hopefully fill this cache with classTimes that we know are part of open evaluations as part of a regularly scheduled job so cache hits will be near 100% (we might have to test cache size and longevity options).

Would be worth adding caching for evaluation questions. Importantly, once an evaluation is open, all associated class times and questions are static and can't change.