Consistently rename anonymous tags and drop the last ctags diff
Check all the collected tags once a file is parsed (i.e. when
we have all tags, including those from subparsers) and renamea
them in the form
anon_enum_1
anon_struct_1
anon_enum_2
anon_struct_2
where the second component is a ctags kind and the number is
per-kind.
In addition, scopes of the nested tags have to be updated if the parent
tag is an anonymous tag.
Finally, for anonymous tags of the form typedef struct Foo{int a;};
we can use the name of the typedef instead of generating the
anonymous name. In this case we can drop the typedef tag once
the anonymous tag is updated with its name.
More details can be found in comments.