Fixed bug in handling of IF nodes.

The problem arises from the interaction between IF nodes
and BREAK nodes.

For example, consider the expression

let var a := 101 in
while a do
  a := (if a then (break ; 34) else 1)
end

Clearly the expression (break ; 34) doesn't have _any_ well-defined
value (what would be its type?). Hence we cannot hope to compile this
using PHI-nodes. Instead we alloca-te a variable in the stack to
hold the result of each of the branches and then we load that and
use it any way we like (in this example we would store its value in 'a').

To alloca-te the auxiliary varaible, we need to know the type of the
branches of the IF. We updated Typing to annotate Typedtree with this type.