Extract waiting logic out to Whitehall grab bag

On @h-lame's excellent suggestion, I've pulled out the logic for
waiting until a given time to it's own method outside of the
scheduling code.
Update to latest exception notification gem

This is so I can make use of the background_exception_notification
method during rake tasks. This should be a drop-in replacement.
Catch & report scheduled publishing failures

In theory, this should not happen very often, if at all, as we'd
expect after 5 attempts, all scheduled editions to be successfully
published, even with contention between backend servers. When this
does happen though, we use exception notifier to report the failure,
including log output of what happened and the ids of the editons that
failed to be published.
DRY up "acting as" code

Pulled out the common logic for switching between users to the
Edition::AuditTrail module. Note that the use of a class-level
attr_accessor in AuditTrail is not thread-safe. Using Thread.current
would be a better solution, especially if we ever intend to use
something like sidekiq for processing background jobs.