blog webmentions: tumblr + disqus working!
fetch_mf2(): short circuit on http fetch error
expand log sanitizing to include api_key
normalize tumblr post url before looking up in disqus

specifically, strip slug, query, and fragment
Posse-post-discovery: use rel=feed and type=text/html

When looking for the author's h-feed url, make sure to
check the content-type. If it is not given, uses
follow_redirects to resolve the url and get the content-type
from the response headers.

Added unit tests for cases where rel=feed is not of
type text/html. if the type is given, we should not follow
non-text/html feeds. if the type is not given, we fetch each feed
until we find one that matches the expected type.

Added a few lines to util.follow_redirects reraise
AssertionErrors to facilitate better testing.
Added an expected HEAD request to failing publish_test.

test_source_url_redirects_with_refresh was missing an expected call
to requests.head — the except BaseException in util.follow_redirects
had been hiding it previously.
Stylistic clean up for changes to fetching h-feeds.

Use Response.raise_status_code() where applicable.
Added unit test for errored head request of h-feed.
Merge pull request #132 from kylewm/ppd-html-feed

posse-post-discovery: use rel=feed and type=text/html
blog webmentions: start to add superfeedr for sending webmentions
blog webmentions: extract Webmentions subclass out of Response, use it for new BlogPost model
poll task: on silo API call errors, extract and log response body if available
drop old module aliasing workaround that's no longer necessary
factor a SendWebmentions base class out of the Propagate task handler

will be reused for sending blog webmentions
add PropagateBlogPost task handler
superfeedr notification handling
add feed_url() to blog provider model classes
if superfeedr item doesn't have content, fall back to summary
start on superfeedr test
oops, forgot to add superfeedr_test
add superfeedr notify test