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