Add more methods on the Job side (run, on_*)

The `execute` method of the worker now calls the `run` method of the
job.
And the worker will call, if the `on_started`, `on_success`,
`on_skipped`, `on_error`, and `on_requeued` methods of the job, if they
are defined (which is not the case by default)
Also, the logic to requeue a job in the worder is now in its own
`requeue_job` method, calling the `requeue` method of the job which now
accepts `delayed_for` or `delayed_until` arguments instead of
`requeue_delay_delta`