add rough implementation for recursive lambdas

realize it with visiting lambda's ASTs after semantic analysis
remove debug code and unused invocation cache
move all operations related to lambda to lambda_resolver visitor

but odd bug was found.
below code generates IR which crashes LLVM's IR verifier.

    func f1(x, f)
        ret -> y in f(x, y)
    end

    func f2(x, y)
        ret x + y
    end

    func f3(x)
        ret x() as int == 42
    end

    func f4
        ret 42
    end

    func main
        f := -> x in x + 42
        g := -> x in -f(x)
        f(g(g(21)))
    end