Improve state management at Program level and RunRecord level
States for Program level is different from Run level this causes discrepancy in certain scenarios.
Program level states: STARTING, RUNNING, STOPPED,
Run-record level: RUNNING, SUSPENDED, COMPLETED, FAILED, KILLED
We should take a pass at this state management and reconcile the difference between the program and run-record level.
This is a related ticket that was opened a while ago, and has a lot more details.
The REST call should only consult the RunRecord table, not the ProgramRuntimeService. It'll be good to add `STARTING` state to the RunRecord table as well.