Fix some bugs that were causing spurious stalls

Fixed the following problems:

* The start time of the stall was moving ahead while the stall was in
  flight, thereby suggesting a smaller stall than actually occurred.
  Added a feedback channel to get the actual stalled task start time
  into the stall.
* Stop the stall timer instead of resetting after an execution
  completes to avoid a race condition where a stall was being reported
  errorneously due to artifacts of scheduling vis-à-vis tasks that
  execute very quickly.
* Added a panic to ensure there are no outstanding race conditions
  that would generate spurious stalls (stalls where the task had been
  running for less than the timeout).