check it more easily; also extend object safety to cover sized types as well as static methods. This makes it sufficient so that we can always ensure that `Foo : Foo` holds for any trait `Foo`.
Closes #18959 Technically, this causes code that once compiled to no longer compile, but that code probably never ran. [breaking-change]