Set id, exponentially backoff

1.Set id. Allow to manually assign id to job and check if it already exist at save.
usage:
  job = jobs.create(type, data, id)
  job.save()
if job with same id already exist, job.save callback will be called with error "job already exist"
2. Exponentially backoff. Allow to delay attempts with given multiplier.
usage:
  job = jobs.create(type,data)
  job.backoff(rate,custom_delay,attempts)
  job.save()