Processor Cache Keys

Implementation for #671.

Processors (engines or transformers) MAY define a method called `cache_key` that returns a static cache key identifying the state of the function. (Method name maybe revised)

* [ ] Cleanup `uri => processor cache key` function
* [ ] Needs test cases

/cc @chancancode @elia 
I've already been using this `@cache_key` pattern in a few processors. So it fits pretty naturally to just expose it. The value can be used for both the asset dependency cache and the local computation cache.