Better handling of type/tag conflicts

* Now using ID or TAGID for subtypes, i.e. C parser preserves this
  namespace information for the AST
* Symbol conflict fixup can now handle conflicts between typedefs and
  structs/unions/enums, and update the corresponding subtypes properly