split BasicCache out of dictutils into cacheutils