Cache the result, not the iteratee in cached action

We were caching the iteratee in the cached action, which meant that even
when the cache was hit, most of the action would still be executed.
Rather, the result should be cached.
Merge pull request #1819 from jroper/cached-action-fix

Cache the result, not the iteratee in cached action