WL-2791 Refactor the cache supporting functions.

Here we're moving the cache supporting functions into their own classes so our service isn't implementing them any more. The classes are static so they are truly standalone.
A quick test of our derived path cache invalidation/population.
Add tests for the Cache observer.
If the node has gone from the DB don't cause a problem.
Remove redundant test.
Clarify that static makes it easy.