Add fix to avoid bug in LLVM OCaml bindings.

As they are right now, the build_phi instruction
in module Llvm takes a list of incoming values and predecessors.
This list must be non-empty (as it is used to deduce the type
of the phi-instruction).

This means that we cannot emit a new basic block (with no
predecessors) when we see a LET_BLOCK expression. Instead, we
have to wait until it is invoked at least once so that we can
provide a non-empty list of incoming values.

In order to delay the emission of the LET_BLOCK block until we
see a corresponding GOTO expression, we must save the context
(benv and venv) in which the body of the local block must be
emitted; see Emit.block_info and Emit.goto.

All in all, a horrible hack.

I also fixed a somewhat related bug in the emission of code for IF nodes.
It produced garbage if we had a expression of the
form IF (..., GOTO (bl, ...), GOTO (bl, ...)). This type of expression
gets produced for the Tiger program x := (if ... then ... else ...).
The problem is that the corresponding phi node in bl only had 1
predecessor, but two different values! So we must split the two branches
of the IF into different basic blocks and only then jump to bl. The
reason for the original implementation was to optimise (!) the basic
block cfg.  Let this serve as a warning for the future.