DynTypedNode and ASTNodeKind are implemented as part of the clang AST
library, which uses the main clang namespace. There doesn't seem to be a
need for this extra level of namespacing.
I left behind aliases in the ast_type_traits namespace for out of tree
clients of these APIs. To provide aliases for the enumerators, I used
this pattern:
namespace ast_type_traits { constexpr TraversalKind TK_AsIs = ::clang::TK_AsIs; }
I think the typedefs will be useful for migration, but we might be able
to drop these enumerator aliases. Reviewers, let me know what you think.