make ast_walker enable visitor to visit ast::node::any_expr
make visiting node non-const to replace some nodes
replace references to captured variables with data member access
add lambda object to the 1st argument of the function as receiver when the function is instantiated
add lambda object as a 1st parameter of the lambda function invocation
refactor replacing symbol with UFCS invocation
add additional condition not to replace the symbol in lambda capture check
add a member function to dump the contents of variable table
prevent infinite recursion on inspecting a generic function type

when the function's parameter is the generic function type for itself,
the issue occurs.
tweak the output of semantics_context::dump()
remove type instantiation of lambda object as tuple

lambda's type should be distinguished from tuple and it should be a
generic function type.  Though both generic function type and tuple are
implemented with struct, they have the different semantics as type each
other.
fix duplicate emission
emit struct for lambda expression which includes the captured values
replace function template with the instantiated function for lambda object on do-end block

I wrote some comments.  It help you to understand the behavior.
add tuple object to arguments of invocation for do-end block

tuple object is a temporary implementation for anonymous class object
for lambda.
add to the front of arguments on lambda function invocation
remove debug code
dump_lambda_captures() dumps to stderr
use tuple type for temporary lambda object
do refatorings; split some procedures as function