Move lambda bodies to methods on their owning class

This commit makes the bodies of lambdas ordinary inner methods, which
then get lifted to top level methods by LambdaLift. The anonymous
FunctionN class for the lambda now has a simple apply method that
delegates to the new method. A -Y flag is added to disable this
change.

Currently there are issues with lambdas defined in a call to a super
constructor so when that case is detected Uncurry falls back to the old
behavior of inlining the lambda body into the anonymous FunctionN class.
A -X flag is provided for experimenting with emitting a static method
in those circumstances.

Several existing tests are modified to take into account the signatures
of the newly generated methods.

Two new tests are created. One ensures that anonymous functions
continue to work. The other ensures that the bodies are being
placed in methods on the owning class instead of the FuncitonN
class.