Avoid some `InferCtxt::build` calls Either because we're inside of an `InferCtxt` already, or because we're not in a place where we'd ever see inference vars. r? types
For high-level intro to how type checking works in rustc, see the type checking chapter of the rustc dev guide.