Part of the [revised diagnostic model][1] is to provide users with
diagnostics that explain what's going wrong from their perspective,
as opposed to from the compiler's perspective. This may be achieved
through a rewording of the reason, or by provididng more info, or both.
This commit also changes the diagnostic for an explicit template
parameter gone wrong to demonstrate how it works.
[1]: https://discourse.llvm.org/t/rfc-improving-clang-s-diagnostics/62584
"Reason" is a part of the diagnostic itself, pre-rendered, right? Since these strings are literals, can this be an llvm::StringLiteral instead? (the constexpr-stringref type)?
Else, generating these is going to cost us at startup time.