Put enum tags in the same name space as structs and unions.

We've been handling enum as synonym for int. This patch doesn't change that,
but does some error checking for the case that the same tag name is used for
struct or union and enum.