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 
It's intended to allow multiple calls to `update()` without duplicating the propagate step.
I see now that there's now place where that's needed, will merge the 2.