Added `UnmarshalJSON` function for `Tag` type
Added a `Tags` type.

This is neccessary so that a JSON string can be unmarshalled into a `Tags` object, regardless of whether the form of the string is `{"foo":"bar"}` or `[["foo","bar"]]`.