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