Watch based client cache

In preparation for moving the scheduler into its own plugin, these are some objects that make it really easy.

...of course this won't be useful without more advanced watching in the server. I'm working on that.
Add a comment to explain that while the cache access is thread safe, the underlying objects are not?