Sidekiq

Changed the `#activate` vs  `#activate!` naming. You should use `#activate` to trigger the job, and `#activate!` to by pass the job and just apply the state change. `#activate!` reflects that its potential dangerous as it does not use the job method.

Converted the job to a worker, using sidekiq conventions. Added testing.