feat(cache): Move cache out of core, add a CacheRegister

Is a `Future.value()` a lot cheaper than a completed `Future` ?