fix(component factory): Only create a single ShadowDomComponentFactory
feat(cache): Move cache out of core, add a CacheRegister
feat(cache): Add existing caches to CacheRegister

Closes #1165