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
so the difference is that this block returns abort=True (if we see an rsvp, it's pretty clear that's the thing they are trying to publish) and the generic block returns abort=False (i.e. keep looking for something to publish).

also worth pointing out that I wasn't sure what to do with the error message if abort=False. currently it gets logged and moves on, and eventually shows the user the old generic error message "%s doesn't support type(s) %s, or no content was found.."

see https://github.com/snarfed/bridgy/pull/251/files#diff-b51d4978d52c511557f80eba605007beR170

eek just noticed that the two parameters of that logging.error call are reversed.