publish: improve error reporting for comments, likes, and shares

- change create methods to return a tuple containing the result and
  a descriptive "failure" object (instead of throwing
  NotImplementedError)
- give informative error messages when publishing comments, likes,
  or shares without a target url for the given silo
- added unit tests for the more detailed error reporting for facebook
  and twitter publishing

ref issue snarfed/bridgy#223
i'm not sure these are pulling their weight. the call sites in twitter.py and facebook.py would still probably be about as readable if they were inlined. do you think they're worthwhile?