Refactor cache updater to work outside of the users home

This refactors `Cache\Updater` to work on any `View` and removes the assumption of working within the users home folder, additionally `View` is changed to call the updater directly to provide a simpler and more robust code flow to the updater.

Fixes #9496, #8965

cc @PVince81 @DeepDiver1975 
Is there a use case to sometimes call `update()` without propagating ? Why separate them ?