Simplify typechecking of tc-let

The main commit is the second one, the first is a previous PR in review and and the third is cleanup to avoid a bug uncovered by the second.