[clang] fix crash related to missing source locations for converted template arguments (#187352)
This adds a way to attach source locations to trivially created template
arguments such as packs, or converted expressions when there is no
expression available.
This also avoids crashes due to missing source locations.
In a few places where this matters, we already create expressions from
the converted arguments, but this requires access to Sema, where
currently creating trivial typelocs only requires access to to the
ASTContext.
So this creates a new storage kind for TemplateArgumentLocs, where a
single SourceLocation is stored, embedded in the pointer where possible.
As a drive-by, strenghten asserts by enforcing the TemplateArgumentLocs
are created with the right kinds of locations.
Fixes #186655