Defensive programming against payload/queue/id not existing

Just do the sensible things:

 - If no ID is available on the job payload, then there is probably
    no status object to update. (Tracking completely disabled?)
 - If no queue is available, prevent a PHP warning
Change expectation on bad job class

Don't expect an uncaught exception. Instead, reserve to catch
the bad class and process it through the failure backend, eventually
returning null (no valid job to reserve).