Add Background cache support

Avoid reload textures and colors multiple times. Will be very useful when budgie-desktop have support to slideshow backgrounds.
This can be used directly in wm/plugin or in future middle Object (Background manager?)
Depending of application design, this also can be a singleton.

This is based on gnome-shell js/ui/background.js