Fixes #8210 - Adding caching for smart-proxy puppet classes using Stefan Julin's implementation of cache

@witlessbird can the example stay relative after changing the default to `File.expand_path("cache", File.expand_path("../../", __FILE__))`?