makes StoryMetadata generic to allow different story narratives

Fixes #66

Don't merge this yet. I pushed it early so we can discuss the approach first