Cleanup typer part 3: Preparing to merge type_value and type_expression
This MR prepares the work for #1182 (closed)
There seem to be two main differences:
- records and variants (single case "Row" vs. T_Record and T_Variant)
- constants (constant itself + argument in one case, T_App(t, t) in the other)
- constants are treated like keywords (they are not properly scoped) and are not using an OCaml variant, instead they are just type variables which happen to have the right name: https://gitlab.com/ligolang/ligo/-/blob/310c22d2/src/passes/09.5-inference/wrap.ml#L11-55