Improved algorithm in Typecheck2.

Before the main typechecking/translation functions
were of the form:

  exp tenv renv venv loop e nxt

where [nxt] is the continuation and the translation function
was supposed to call [nxt] with an expression (type: Typedtree2.exp)
containig the result of evaluating [e]. If one wanted to do anything
with the expression passed to [nxt], one had to transform that
expression into a value (type: Typedtree2.value) using [Typecheck2.insert_let].

Instead, now we make [nxt] take a value (type: Typedtree2.value) directly.
That is, we apply [insert_let] as soon as we produce an expression, instead
of waiting for the continuation to use it.

This results in a net decrease in the number of lines, making it easier to
read and even getting rid of the constructor [Typedtree2.Evalue].
Improved the Runtime error messages.