feat: add generic in-memory cache interface (#737)
Files to modify:


**cache.rs**
  Add:
    - function: private::as_any
    - function: private::deref
    - function: pub::new
    - function: pub::get_val
    - function: private::construct_and_get_cache
    - struct: pub::Cache
    - trait: pub::Cacheable
    - impl: impl Cacheable for T
    - impl: impl std::ops::Deref for Cache
    - impl: impl Cache
    - mod: private::cache_tests

**lib.rs**
  Add:
    - mod: pub::cache