Symbol substutition must consider ClassInfoType#parents

To make substitution of `lambda params => apply method params` work
(which is coming in the subsequent commit), I first have 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`.
Now working: PartialFunc dependent on value class param type

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

This test case failes under 2.11.0-M6, but now works after the
recent fix to `SubstMap`.
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`.