Make Delayed Job behave better in development

This PR does 3 things:

1. Upgrade to the latest delayed_job_active_record.
2. Refactor `SilenceDelayedJobQueries`.
  - Move most of the code into `lib`
  - Get rid of the seperate initializer and run the necessary code in `config/initializers/delayed_job.rb`
  - Clean up the code a bit using `ensure`
3. Reload classes before each job if `config.cache_classes` is set (adapted from https://github.com/Viximo/delayed_job-rails_reloader)

If this works well, I'll make similar changes on hackerschool/hackerschool.
This is definitely `true` in production?