Use Sidekiq's built-in retries and pass in args to before and after

- ```before``` and ```after``` blocks take in the same args as the ```perform``` block
- Instead of our own hacky retry logic, use Sidekiq's built-in retries--this means that jobs can "fail" if they throw an exception OR if their ```before``` block is not met!
- Optional arguments to skip before/after callbacks