Refactor to include less stuff directly in ActiveJob::Retry but use Retrier classes

Refactor all the things! This should make it epicly easy to customise.
:+1:  I'll open a separate PR for travis config - need to add the integration specs too.