CLC-3271 Handle intermittent Canvas course/sections failures

https://jira.ets.berkeley.edu/jira/browse/CLC-3271

Nasty regression whereby a failure from one of the Canvas proxy calls could cause three dashboard widgets to return 500s.

This version of the code lets the failed proxy queue its cache key for cleanup, but the user's merged Canvas site list will be cached as usual even though the proxy failure left it empty. Since its cache lifespan is only 15 minutes, I think this will be acceptable. If it turns out not to be, we'll add the merged-user-sites cache to the delayed-cleanup as well.

If this gets merged, I'll add a QA PR.