test for webmention discovery bug on pages without Content-Type header

for #299. goes with snarfed/webmention-tools@5cc35781a7cad61db10ac891840ec4057131e788
Merge branch 'master' of github.com:snarfed/bridgy
support external registration callback for declines

- redirect to callback with ?result=declined
- also process review feedback from @snarfed

issue #240
reorder some imports. (noop.)
drop the historical snapshot stats on /about; just link to front page
use a mixin class to inject state param into initial oauth redirect

i think i can simplify this further, but it's an interesting intermediate step on its own. cc @kylewm
generate custom oauth start handler classes that inject the state param, take 2

cc @kylewm
registration callback api: support user_url override

If provided, the user_url query string param will supersede
the silo user's configured url.
registration callback: move tests to util_test

- changed util.oauth_starter to take the StartHandler class itself
  rather than the module (to make constructing a test handler a little
  easier)
- moved unit tests out of twitter_test and facebook_test and
  into util_test with FakeSource and FakeAuthEntity
- added unit test for a provided user_url; if provided this url is
  prepended to Source.domain_urls and Source.domains