Tag management

I've created a new tag model that has the ability to categorise tags. At the moment the tag categories are in a constant in the model, but if we think new tag categories will be added often then it'd be easy to extract that out to a TagType model. I've also added some specs :+1: