Tidy up the Uncurry component of delambdafy

 - Use tree factories that accept symbols and encapsulate ValDef
   creation
 - Use `gen.mkForwarder` to handle the conditional addition of
   `: _*` for varargs functions. We don't need to predicate this
   on `etaExpandKeepsStar`; the only place that need to do that
   is EtaExpansion.
Symbol substutition must consider ClassInfoType#parents

An upcoming change to uncurry, in which I plan to make substitution of
`lambda params -> apply method params` requires that I first to fix a
problem in symbol substition.

This situation can arise when the body of this definition:

    def owner1(a: A) = {
        class C extends M[a.B]
    }

is transplanted into a new owner that has a different symbol for `a`.

I speculated that value classes might also be prone to the
fact that symbol substitution neglected `ClassInfoType#parents`.

We can test change with Value Classes:  Partial Functions that are
dependent on value class param type used to fail with a spurious
overriding error, now they work correctly.
Substitute new parameter symbols into lambda body

Previously, new synthetic parameter symbols were created for the
apply method parameters, but only used in its `MethodType`. The
`ValDef` trees of the function, along with their symbols, were
used directly as the parameter trees of the apply method.

    % cat sandbox/test.scala
    object Test {
      (x: Int) => {
        (y: Int) => ???
      }
    }

    % scalac-hash v2.10.3 -Xprint:typer,uncurry -uniqid ../scala2/sandbox/test.scala  | egrep 'syntax|\bx'
    [info] v2.10.3 => /Users/jason/usr/scala-v2.10.3-0-g88b5d19
    [[syntax trees at end of                     typer]] // test.scala
        ((x#12152: Int#351) => x#12152)#12151
    [[syntax trees at end of                   uncurry]] // test.scala
            final def apply#15952(x#12152: Int#351): Int#351 = x#12152

This approach dates back a long way: c64152bc3. @odersky tells me it
was most likely due to insufficent substitution/cloning machinery
at the time.

    % qbin/scalac -Xprint:typer,uncurry -uniqid ../scala2/sandbox/test.scala  | egrep 'syntax|\bx'
    [[syntax trees at end of                     typer]] // test.scala
        ((x#13685: Int#1760) => x#13685)#13671
    [[syntax trees at end of                   uncurry]] // test.scala
            final def apply#13959(x#13960: Int#1760): Int#1760 = x#13960

To make this work, I had to fix a problem in symbol substition; this
was commited in the previous commit. In the enclosed test, at Uncurry,
the symbol of the nested class `N` had a `ClassInfoType`, which listed
as a parent `M[a.C]`. When we substituted the new method parameter
symbol `a` for the eponymous function parameter symbol, this was not
touched.
Refactor away duplication between -Ydelambdafy:{inline,method}
Special treatment for local symbols in TypeTreeMemberType

Avoids calling `thisType` on the owner if it is a term symbol,
which doesn't make much sense.

This method is used internally in tree factory methods that
create, e.g, a `DefDef` based on the info of a `Symbol`.
Merge pull request #3165 from retronym/ticket/uncurry-tidy-2

Unifying -Ydelambdafy:{inline, method}