adding cache layer

* uglify only if file hash has changed
* create a temporary directory to store cacheable files (.js and .map)
* use a flat structure for all uglify'd cache entries using a hash