Fix instantiation naming

Fix ::name of AbstractMeta{Type,Class} for type-template instantiations.
These were giving odd results because namespace splitting could split on
a template argument and throw out the actual type name and resulting in
names like 'Object >'. This doesn't seem to obviously affect code
generation (probably it works because the names are still unique for the
cases we've tested so far, but would have collisions in case of more
than one instantiation with the same template argument(s)), but helps
with debugging when inspecting the name()s.

Change-Id: I7de115b31496bf605b9f660d106ba1d6082bfe7f