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

also, cache_location shouldn't be a global setting, but rather puppet-proxy module one.