Refactor ParseTag

Refactor ParseTag to return (Tag, error), the kind of tag is now available via the Kind() method, although a type assertion is preferred. The contents of the tag is now moved to the Id() method.
We don't really need expectKind any more if we have expectType right?