[clang][Sema] Check -Wunused-private-field at template instantiation instead of definition (#237374)
1. Fix a false positive to not warn when a private field of a
`[[gnu::warn_unused]]` type in a class template is used by a templated
function.
2. Fix a false negative to warn when an instantiated class template has
an unused private field.
Fixes: #237370
Assisted-by: Gemini