This patch adds a method to ExternalSemaSource to allow it to produce diagnostics when an incomplete type was detected where a complete type was required. For example, one could define an ExternalSemaSource that scans a repository for headers providing a missing definition.
The purpose of the MaybeDiagnoseMissingCompleteType method differs from that of the existing ExternalASTSource::CompleteType method. The former is invoked to diagnose a single SourceLocation-ed missing-complete-type site where there is no chance for recovery. The latter may be called in the course of compiling a valid source file with some of its definitions available in external but otherwise available locations.
Nit: "\p T" -> "T" to refer to the parameter T.