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 will let the proxy call 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 merge-user-sites cache to the delayed-cleanup as well.

If this gets merged, I'll add a QA PR.