Extract scheduled publishing to a worker class

The work of publishing a scheduled edition has been pulled out to a
separate class that intentionally mirrors the API used by background
job systems like sidekiq and resque. This is so that if/when we move
to a proper job queue system for handling scheduled publishings, we
can simply queue one of these workers at the point the edition is
scheduled to be published and leave the job system to handle the
scheduling of the job and retries in the event of failure.
Remove cruft

It doesn't matter what publish_atomically_as returns; creating
the robot if it doesn't exist shouldn't happen in the model;
acting_as method is no longer used; Logging due count in statsd is not
useful.
Fix scheduling robot factory
Extract scheduled publishing out to its own class

This now tests the waiting until publish time, although that involves
a second-long pause in the tests. If anyone can think of a better way
to test this, I'd love some feedback.
Add retry code for scheduled edition publishing

We retry up to 5 times before giving up by raising an exception. The
plan is to catch this exception and report it using the exception
notification system in the next commit.