Reduce cache size #2340

By storing dependcies only for the last thing being computed,
instead of all of them, we avoid duplicating data and thus reduce
memory size needed for cache
Optimize computing speed #2340

By computing min and max regressions when computing all regressions
we avoid re-computing it a lot of time in following recursivity.
This save about 25% of time when warming up cache for Bangladesh.
Use explicit arguments for getCacheKey #2340

This is a minor optimization, but still avoid one recursive call
Minor tweak on cache key generator #2340

Reorder cases according to real case measurements
Fix unit tests for QuestionnaireUsage