Move (most) Redis communication to a controller.

This allows us to specify what to do on connection failure (1) in one
place, and (2) on a per-method basis.
A custom pipeline runner.

Rationale:

The ArchiveBot pipeline and wpull hooks now delegate all communication
with the control node to a Pykka actor.  An actor is in use because
there are some messages that are really fire-and-forget (e.g. we don't
really care if some log messages get lost) whereas some must either
return a response or fail (e.g. setting the "aborted" flag).  Actors,
IMO, provide a nice abstraction for this sort of "I will tell you what
to do and you will give me an answer and/or do it" concurrency model.

When shutting a pipeline down, we need to also shut down the control
actor's event loop.  (If we do not, then features like touch STOP don't
shut down the pipeline runner process.)  We can do this in two ways:

1. Run the control actors in wpull/seesaw's ioloops.  The lifetime of
   the actor is therefore bounded by the lifetime of the ioloop.
2. Develop a custom runner that shuts down the pipeline's control actor
   when it can.

It would be nice to be able to run the control actors inside the same
Tornado ioloops used by the pipeline and wpull.  However, as far as I
can tell, there is no Pykka actor implementation that operates in such a
fashion, and I am not really interested in doing that just yet.
Therefore, I decided to implement solution (2).

run-pipeline/run-pipeline3 will still run an ArchiveBot pipeline.
However, you won't get a fully functioning touch STOP.  From this
point on, it is recommended that you run ArchiveBot pipelines as
follows:

  ./run.py --concurrent N