Clean up job creation

Job creation is asynchronous and relies on the job object. The
job object will be extended for fetching existing jobs in a
queue, marking progress on the job, passing a job to another
queue, etc.