Add better job status tracking

Add better job status track through the life-cycle of:

delayed, queued, active, complete, expired

This will allow better tracking about the state of queued jobs, and make it
easier to clean up after ourselves, removing old job data after some amount of
time, for example.