Add Job retry behavior

- [ ] job can define retry max count, or interpolated value like `${option.retry}`
- [ ] if execution fails or timesout, retry it up to max number of times
- [ ] if execution is aborted, don't retry
- [ ] retry attempt is available to execution as `${job.retryAttempt}`. 0 for first execution.
- [ ] GUI displays retry information for executions