Disallow updates to the tag_type field

The `tag_type` field should not be able to be changed using the tags controller, as it effectively moves the tag to another ID, and breaks its taggings.

These changes disallow updates to this field, and refactors the code that enforced these validations to be clearer and reduce duplication.