Changing schedule! behavior; adding priority

1. `schedule!` will now unschedule and reschedule the job (rather than
potentially creating a duplicate)
1. priority can be set either in the class or by passing options.