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 mostly happy with it... I didn't know if you would be OK with returning (result, error namedtuple), as opposed to just one namedtuple CreationResult. I liked the (result, error) convention from the tiny bit of Go I've written.

Also, moving error detection into the a-u twitter and facebook modules means a little bit of redundant text for the error messages (reply without in-reply-to is almost the same for both of them), but it let me be a lot more descriptive in the messages where their behavior differs without fiddling with the order of the error checks too much (e.g., when you see an RSVP without an in-reply-to, twitter should say "we don't support RSVPs at all" and facebook should say "you're so close!")