Add step-wise caching to src-cli
Created by: mrnugget
This is a sub-ticket of https://github.com/sourcegraph/sourcegraph/issues/19476.
The idea is described in https://hungry-yonath-3c673a.netlify.app/, but the short version:
- Instead of caching only the result of executing all steps in a repository, we cache the results per step
- We invalidate the cache for a step only if the step or one of the previous steps definitions changed