This revision refactors the default definition of the attribute and type classof methods to use the TypeID of the concrete class instead of invoking the kindof method. The TypeID is already used as part of uniquing, and this allows for removing the need for users to define any of the type casting utilities themselves.
Depends On D85348
clang-format: please reformat the code