Feature/implement generic adapter 3184

The reason behind these changes are so that jobs can be enqueued without knowing the arguments beforehand and being able to enqueue multiple jobs at one completion. I do agree that `enqueue` is the not the most descriptive, but I'd like to avoid `perform` because of its Sidekiq/Resque connotaions