enhancements to job status tracking

 - add helper methods to support fetching started/updated timestamps
 - do not discard `started` timestamp on update
 - simplify job id mapping
 - sanity check `update()` to accept valid statuses only