copy over clang's ASTDiagnostic.cpp
remove template type diffing from ASTDiagnostic
remove all but ak_declcontext from ASTDiagnostic.cpp
add clang's ASTDiagnostic.h
hook up ASTDiagnostic as diag arg fn in sema

There's no Type::getAsString() yet, so this prints types as "<type>" for
now.
build ast nodes for field accesses, allows nested struct accesses