Integrate ActiveJob / DeliverLater / GlobalID with Rails

WIP.
I don't think that's a good change. We should change GlobalID to raise a specific error, so you can rescue that without rescuing generic ArgumentErrors, but it doesn't make sense to me to force people implement their own handling like what's being proposed here.

You don't need rescue_from when you're rescuing app exceptions that stem from your own code that's being run in that #perform method. But it's a great pattern when you're rescuing errors from services outside of your control. The deserialization is one example, here's another we're using pre-AJ in Basecamp (so I've just rewritten as pseudo code here):


```ruby
class ApplicationJob
  rescue_from(Mysql2::Error) do
    if e.message =~ /can't connect to mysql server/i
      retry_in 3.minutes
    else
      raise
    end  
  end
```

We have some similar rescues around errors that can come from our CleverSafe file storage system that our jobs interface with. We don't want to rescue those explicitly in #perform.

This is exactly the same motivation we have for rescue_from in AP. You rescue general classes of generic errors, like ActiveRecord::RecordNotFound, and give them generic errors like 404. You then combine that with specific rescues in your action methods, if those are specific to that action.