Merge pull request #2177 from JamesIry/master_SI-7159

SI-7159 Distinguish between assignability and subtyping in TypeKinds
Turn anonymous function bodies into regular defs

As one tiny step towards method handles, this change moves the body
of an anonymous function into a fresh ordinary def. Then an
anonymous subclass of FunctionN gets an apply method that calls that
new def.

Transform a function node (x_1,...,x_n) => body of type
   FunctionN[T_1, .., T_N, R]

into

{
  final def anonfun(x_1: T_1, ..., x_N: T_n): R = body
  class $anon() extends AbstractFunctionN[T_1, .., T_N, R]
      with Serializable {
    def apply(x_1: T_1, ..., x_N: T_n): R = anonfun(x_1, x_2, ..., x_N)
  }
  new $anon()
}
If we're in a constructor then just inline the function body into
the anonymous class's apply method.