More refinements to Taggable
Major refactoring of data interfaces

To make the usage clearer, this refactors the data interfaces
(Favoritable, Taggable, etc.)
Fixes issue with duplicate tag entries being added
Improves the TagWidget; allows for theming