Pass symbols for parameters to MethodType.

Fix construction of the MethodType corresponding to a constructor
in Delambdafy. Instead of passing a symbol corresponding to local
val def for a parameter there was a symbol corresponding to type
of that val def being passed. An example might explain the
difference. Let's assume we have a method:

def m(x: Array[Int]): Int

then it's MethodType should look like this:

MethodType(List(<symbol of x>), IntTpe)

but instead we were creating the following type:

MethodType(List(<symbol of Array>), IntTpe)

which is very wrong. As a consequence, GenICode would see our
method to have the following signature:

def m(xs: Array[T]): Int

for undefined T.

I checked other places in Delambdafy for the same mistake and it seems
like everywhere else it's ok.
Fix condition for bridge method generation.

The condition to generate bridge method was:

neededParams contains true || neededReturn

which was interpreted as:

neededParams contains (true || neededReturn)

and not as:

  neededParams.contains(true) || neededReturn

which was author's intention.

It turns out that infix method calls are not always the best idea.
Bridging can be skipped only if types match exactly.

For example, even if your return type is a subtype of expected
type you still need to generate bridge method because jvm doesn't
consider subtyping hierarchy when linking. Signatures must exactly
match.
Print type history using phases properly
Value classes need to be boxed and unboxed in their own special unique
snowflake way.