Much work on function calling and type boxing.

The following program now works:
if true -> 42 & false -> 0 fi;
x:=func (x11:Int, x12:Int) -> (Int)
 x11  + x12
end;x(1,123)+0