Introduce a common base clase for global caching of objects
Delegate Sparsity caching to the Cached base class
Call _process_args before passing arguments to _cache_key or constructor
_initialized flag to guard against multiple __init__ calls

Classes derived from Cached need to set a flag indicating whether the
constructor has already been called and immediately return from
__init__ if the flag is set. Not doing this causes the object to be
re-initialized even if it was returned from cache!
Delegate ParLoop caching to Cached base class
Remove helper functions _empty_parloop_cache, _parloop_cache_size
Only cache generated ParLoop stub in JITModule class
Returning None for _cache_key means don't store in cache
Classes derived from Cached need to provide their own _cache
Delegate _GenericPlan caching to Cached base class
Remove helper functions _empty_plan_cache and _plan_cache_size
Cache kernels
Add kernel caching unit tests