Added scheduled job de-duplication

Passing an additional `$dedupe` paramater the the `enqueue` functions will ensure that a job in the same queue, with the same class and same args is not scheduled more than once.