Tons of updates

resolves #35, adding new baseclass for all Taggable assets too... i'm
not entirely sure i'll need the interface when I'm done, but the type
parameter on the base class makes it tough to enumerate over... sensing
a factory pattern is afoot somewhere in here