Support JSON requests to update a tag

This changes the update action to correctly handle JSON requests. 

We also now raise a more explicit error when a request is made to update
the tag_id or parent_id fields for a tag.