Use the typer in ExprUseVisitor and do not hard code to tcx
Remove the regionck impl of Typer and just use fcx. This requires
modifying fcx to remove type variables where possible, but that's it.
Extend Typer interface to include `expr_ty_adjusted` so that we can
remove another direct dependency on tcx from euv.
Remove `McResult` from the mem-categorization interface.
Move mem-categorization more things to use TYPER for the method origin
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.
Rename `trait_ref` field to `predicate`, since `trait_ref` is really
overly general, and the value is always *some* sort of predicate.
Rename `Polytype` to `TypeScheme` to differentiate type schemes (early bound) from higher-ranked things (late-bound), which also use the `Poly` prefix.
Move the scalar types out of static data so that we can put `Rc` into sty.
Implement associated type projection and normalization.
Convert to use `Rc<TraitRef>` in object types (finally!).
Integrate projection bounds to `ExistentialBounds` but do not use them for anything.
Allow object safe traits to access associated types.
Teach `project` to project associated types out of object types.
Make projected types select out of the trait bounds.
Update error messages in various compile-fail tests
Remove the def-id from type parameters. Having this def-id was bad for several reasons:

1. Produced more unique types than is necessary. This increases memory consumption.
2. Linking the type parameter to its definition *seems* like a good idea, but it
   encourages reliance on the bounds listing.
3. It made pretty-printing harder and in particular was causing bad error messages
   when errors occurred before the `TypeParameterDef` entries were fully stored.