Omission in compiler: handling of complex initializations of module
variables

This regards initializations that themselves introduce new local
variables by way of declarations or generated temporaries.

These (a bit involved) additions to TypeUtils are a first step in
solving this problem.
Merge branch 'master' of https://github.com/cwi-swat/rascal.git
Fully solved compilation of initialization expressions

The problem was that declarations of module variables like

list[int] ints1 = {x | x <- [1,2,3,4,5], x > 2};
list[int] ints2 = [ 1 .. 10];

either:
- introduces new local variables, or
- introduces temporaries during translation.

The solution is to carefully administrate all these locals and add them
as locals to the init function of the module.
Added disambiguations needed for type checker