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
minor: consider `collections.namedtuple`. it's nice when using tuples as part of an API, or otherwise passing them across method boundaries.