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.