* Extracting a Cache interface and building service loaders for Caffeine and Guava
* Fix estimated size interface
* Use LoadingCache when needed.
* Removing Caffeine from dependency lists.
* Adding hapi-fhir-cache-caffeine as a test dependency
* Putting caching solutions in a single module.
* Fixing the spacing
* Standardizing the use of TimeUnits
* Making a new module to simplify the switch of the cache library in tests.
* Making sure the Guava design matches the behavior of Caffeine.
* Making sure the Cache structure also does not throw InvalidCacheLoading exception to match the LoadingCache.
* Renaming module names for the caching group.
* Better error handing that informs devs what to do.
* Improving documentation
* Typo
* Matching error message design with Caffeine.
* Matching the behavior of Caffeine with Guava
* Final adjustments for the test dependencies on the cache modules.
* Fixing relative pom path.
* Adding caffeine as a testing requirement for the new modules.
* Add changelog and set JPA server to use caffeine cache
* POM fixes
* Build fix
* Buid fix
* Fixes
* Address review comment
* One more cache
* Move changelog to next release
* Update pom versions
* Build fix
* Build fixes
* Build fix
* Try to get build working
* Experiment with failing build
* Rever change
* Fix POM version
* Build fix
* Build fix
* Add Msg.code to new exceptions
Co-authored-by: Vitor Pamplona <vitor@vitorpamplona.com>