Some fixes to diagnostics and lints

I’m not so sure about the way I’ve handled #17567, but at least the error message is an improvement over what it was before (albeit still not quite as good as it was before DST).
I explicitly avoided calling `note_obligation_cause` because it mentions `Sized`, which is confusing, and often says something like `all local variables must have a statically known size`, which is usually incorrect.