Improve retry functionality
Currently our retry operation is very simple: we retry only single build and trigger processing of all future builds.
However, retry operation is more complicated, because:
- builds can have dependencies,
- dependencies can have artifacts which can expire and be erased,
- builds can trigger future stages of pipeline, for example on failure,
We currently only support a subset of options, enqueuing future builds that were not yet executed (were marked as skipped). This is limiting and can lead to edge cases when pipeline did fail and only a part of pipeline go triggered.
This leads me to conclusion that we should probably move retry out of Ci::Build to separate service to make it easier to handle processing of such operation.