Integrate ActiveJob / DeliverLater / GlobalID with Rails

WIP.
From my point of view, I'd see the use case the same as Active Record, allowing code that provides common functionality to be structured the same way and put in the same place, regardless of the back end being used. Possibly also allowing the decision of which back end to use to be delayed. However, similarly to switching between database implementations later, it seems that switching between queueing implementations after the fact would be less common. If the user wants to be stuck with only queues that use YAML or Marshal for serialization, why shouldn't we let them? Why does this argument not apply to `enqueue_at`, which also isn't supported by all queueing backends?