Fix of FullParameterization

Avoid substitituting A.this if A is a globally accesisble mdoule.
Merge pull request #152 from dotty-staging/fux/substThis

Fix of FullParameterization
Allow FullParametrization to work on localy defined methods
Create RetypingTreeMap that propagates types

If some node in tree is transformed changing the type,
the outer node could potentially also change type.

This patch implements a RetypingTreeMap that propagates those
changes until types converge. Propagation is done for tree nodes
that are able to compute their type based on their children:
Pair, Block, If, Match, CaseDef, Try, SeqLiteral, Annotated, Select.
Fix typo in lazyVals
Add test for tailcall

Test for order of type parameters in recursive call
Make trees after TailRec type correct

TailRec now relies on FullParameterization and uses two passes
for transformation. First one decides weather the method will
be transformed and if yes, starts rewriting calls in taill position.

Second one lifts the method body to a fully parameterized one,
correcting types.
Move Ycheck after tailrec

Hurray!
Defined substitution which follows aliases

Used in FullParameterization to substitute type parameters.
Fixes test failure for t2399.scala
Fixed typo
Merge pull request #155 from dotty-staging/tailrecTC

Tailrec tc
Enable improved incremental compilation (name hashing)

The algorithm is stable enough to try it out for dotty build. It's
enabled in sbt and Akka already.
Eliminate JavaRepeatedParamClass

Having two repeated param classes (and two types) does not work,
because we need to maintain an overriding relationship between
Scala repeated param methods and Java repeated param methods (this
will be resolved later by bridges).
Adapt signature of <repeated>

so that sig(<repeated>[T]) = sig(Seq[T]).
Add varargs bridge methods

Distinguish translations between Java and Scala varargs methods
and add bridges where needed.
Fixed tpd.ref

Did not work for this prefixes and other singleon types before.
I.d. was generating a SelectFromType tree, which is wrong.
Fixed underlyingIfRepeated.

... and moved to TypeApplications.
Cleanup for varargs bridge.

Now inserts a bridge whenever a method overrides a Java varargs method.
This is conservative but safe. We might use a more aggressive scheme, as
the one in Scala 2, but it's not clear the win would warrant it.
Added test case for varargs bridges

Currently we cannot run this test automatically because the testing framework
does not know about .java files. It was run manually and verified that ElimRepeated
does was it is supposed to do (create a varargs bridge).
Merge pull request #141 from dotty-staging/transform/repeated

Transform/repeated