I kind of like `execute(Cache<KOut, VOut> resultsCache)` better, because I see it as an alternative to `execute()` and to `execute(Collator<KOut, VOut, R> collator)`. The collator does seem a bit superfluous, as the user can very well do a regular `execute()` and run the collator on the result map himself, but as long as we have it I guess `execute(Cache<KOut, VOut> resultsCache)` fits better.

BTW Vladimir, I think we were supposed to have a `execute(String resultsCacheName)` overload as well?