added Source.can_create() to check for known unsupported types

- allows us to give intelligent errors when the user tries to publish
  something to a silo that just doesn't support it (e.g. Twitter and RSVPs)
- Source.preview_create() should raise the new type
  CannotPublishTypeError to indicate a known unpublishable type
very minor, with naming nazi hat firmly in place: consider `CannotPublishError`?