Refactor various queries out of `ty` and into `trans/common`
Make ExprUseVisitor<..> use inherited parameter environments.
Move the TypeContents-based "Sized" queries into trans, where the full
types are always known and hence the ParameterEnvironment is not
necessary. For other `Sized` queries, use the trait infrastructure
just like `Copy`.
Rewrite the intrinsicck to take the parameter environment into account. Also fixes #20116.
auto merge of #20159 : nikomatsakis/rust/die-typecontents-die, r=nrc

Currently we use `TypeContents` to determine whether types are sized. This is not good because `TypeContents` cannot take the parameter environment into account and thus cannot handle where clauses.

This patch removes most of those uses and instead uses the trait resolution infrastructure. This means that we can handle context-dependent where clauses. `TypeContents` is still used in trans (possibly this should be removed in a later refactor, actually).

r? @nick29581