download.py: clean entry and title text before comparing

Turns out not all Github commits are guilty of duplicating title and
description. Only when a commit has no "body" and is all "title" are
the two fields the same.

But Github does add some HTML formatting to the "description" element,
so by cleaning it beforehand we get a better idea if they're "the same."
river.py: add --url argument

For when you need to test a feed but don't want to run through the
whole list.
river.py: split out river generation and S3 output
Handle multiple OPML feed lists
top100.opml: remove dead links
download.py: cache feed content for five minutes

Now that we cycle through more than one feed list, this saves us from
downloading the same feed twice for URLs that appear in different feed
lists.
river.py: add --source argument

Only update the provided source in an otherwise multi-source run.

Use the string after ' -> ' as the argument.