posse-post-discovery: prevent duplicate blank entries

* Fix a logical mistake in original_post_discovery._process_entry that
  allowed multiple duplicate blanks entries for a given original post
  when `refetch`ing a user's feed.
* Another bug in SyndicatedPost.get_or_insert... that would have allowed
  duplicate `syndication-url -> None` entries though this hasn't happened
  yet.
Merge pull request #260 from kylewm/duplicate-blanks

posse-post-discovery: prevent duplicate blank entries
posse-post-discovery: Support many-to-many relationships

SyndicatedPost.query_by_original and query_by_syndication now
return lists instead of individual items
posse-post-discovery: cleanup and refactor many-to-many queries

* SyndicatedPost.query_by... methods were not pulling their weight.
  Inlined them in the few places they were being called

* SyndicatedPost.insert() now only handles inserting real (not blank)
  relationships, making the logical much easier to follow/verify

* added SyndicatedPost.insert_...blank utility methods to check for
  pre-existing blanks before inserting new ones.
ppd many-to-many: clean up based on review comments
Merge pull request #261 from kylewm/ppd-many-to-many

posse-post-discovery: Support many-to-many relationships
use Twitter's x_auth_access_type query param to request read-only permissions for listen
ereporter exception string fixes
work around Twitter API bug: /authorize and x_auth_access_type don't play nice together

corresponds to snarfed/oauth-dropins@7ff17feabb86ed88133332b8544f9aaf9c2995cf
ereporter exception
facebook: if there's no error response body, raise the original exception

...instead of choking when we fail to decode the response as JSON
drop most logged exceptions to WARNING and make ereporter ignore them