Introduce mir::Unevaluated Previously the distinction between unevaluated constants in the type-system and in mir was not explicit and a little confusing. Probably better to introduce its own type for that. r? `@lcnr`
For high-level intro to how type checking works in rustc, see the type checking chapter of the rustc dev guide.