Introduce per-pipeline queues; bump pipeline version.

Next up: a UI to start jobs on a specific pipeline.
Teach !a/!ao how to specify a pipeline.

There's no way to figure out what pipelines are available, so this is a
bit inconvenient to use.  That'll change in a bit.
Report UNIX time from pipeline; bump version.

This gives the control node an opportunity to expire pipeline records
that didn't get cleaned up by the usual shutdown mechanism.
Make GetItemFromQueue cancelable; bump pipeline version.

This makes GetItemFromQueue properly respond to touch STOP.
Coarsely modularize ArchiveBot's Python code.

pipeline.py was 477 lines of code that I'm finding increasingly
difficult to change.  The wpull hooks are becoming similarly painful.

There are some pipeline changes that I'd like to do to make pipeline IDs
sticky (to ease recall), and there are also some changes I'd like to
eventually make to ArchiveBot's wpull hooks to make them more efficient,
i.e. not checking every request completion for job settings updates.

This commit splits up ArchiveBot's pipeline and wpull code by rough
functional groups: Seesaw extensions, Seesaw tasks, Seesaw monitoring,
wpull hooks, and helper methods for those hooks.

Finer divisions could be drawn, but this is probably enough for now.  As
I mentioned above, I would like to make pipeline IDs easier to
reference, and the pipeline's now in a state where I can change the
pipeline ID generation code with enough confidence that I won't be
breaking something else.
Move cancellation tracking code to schedule_retry.
Bump pipeline version.
Cut log scrollback in half.

ArchiveBot is currently running with 31 concurrent jobs.  This is more
than has come before, but it is arguably a reasonable concurrency level.
With 512 entries per backlog, the dashboard eats up around a gigabyte of
RAM in Firefox and Chrome.  Hopefully, cutting down the scrollback will
bring that level down a bit.
Reduce LogView memory requirements.

Previously, a LogView consisted of many LogEntryViews, and each
LogEntryView was pretty heavy: it wasn't unusual to have the dashboard
sucking up a gigabyte of RAM (immediately!) with a couple thousand log
entries in play.

This commit greatly reduces the complexity of each LogEntryView, and in
doing so appears to greatly reduce memory consumption.  Anecdote: using
Firefox 27.0.1 (Canonical's build), I can view 3,930 log entries across
17 jobs comfortably.  After running Firefox's GC and CC, about:memory
claims that the dashboard uses 200 MB, which is still pretty fat but
much less so.
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.
Put wpull version in user agent.

Handy for diagnostics, maybe.
Pipeline: print out ID on startup.
Bump pipeline version.
Require wpull 0.28
Bump pipeline version
Merge branch 'pipeline-next'

Conflicts:
	pipeline/pipeline.py
Bump pipeline version.  Again.
Distinguish between "no running jobs" and "loading job data".
Spike out job list filtering.

The UI could use some work, though I actually like where the filter
input currently is, even if it is very difficult to discover.
commands: Updates with regex, real ignore-sets names, /ncr for 1st example.