Fix problem with multiple lambdas defined in the same class.

Multiple lambdas would lead to duplicate `anonfun` static
method defined in the enclosing class. The solution is
to use `unit.freshTermName` that guarantees unique names within
single compilation unit.
Fix problems related to try..catch and patterns.

Some patterns do survive all the way to backend. An example
is try..catch construct where patterns survive all the way
to backend. I fixed two problems related to those patterns:
  * wildcard pattern which has an identifier without symbol
    attached to it
  * free variable detection didn't take into account Bind
    nodes

Added test case demonstrating both problems.
Fix missing proxy problem in lambda lift.

Binding of free variables is deferred to delambdafy phase.
However, bodies of lambdas might call to methods that get
transformed in lambdalift phase and that introduces new
free variables to lambdas. Therefore, we have to transform
bodies of lambdas and supply additional arguments to methods
being transformed by lambdalift but we should skip proxy lookup.
Again, the proxy lookup should be skipped because free variables
of lambdas itself are addressed in delambdafy phase.

This change introduced proper logic for skipping proxies.

Added a test-case which demonstrates problematic scenario.

TODO: test more involved scenarios where lambda bodies are nested in
local methods to see if all possible permutations of nesting structure
are handled properly.
lift the body of a lambda to a method in uncurry, expand the residual
lambda into an anonymous class later