dotlrn cache reform: move caching from util_memoize into three seperate caches to reduce stress on util_memoize.
These caches are:
- ::dotlrn::dotlrn_cache
Default general purpose cache for dotlrn-wide value (e.g. available applets, etc)
- ::dotlrn::dotlrn_user_cache
Partitioned cache for values specific to a user (e.g. personal_portal_id, theme_id, etc)
- ::dotlrn::dotlrn_community_cache
Partitioned cache for values specific to a community (e.g name, roles, portal_id, etc)