patch 9.0.0481: in :def function all closures in loop get the same variables

Problem:    In a :def function all closures in a loop get the same variables.
Solution:   Use a separate list of variables for LOADOUTER and STOREOUTER.
            Not copied at end of loop yet.
diff --git a/src/vim9expr.c b/src/vim9expr.c
index 3da556c..4406ac4 100644
--- a/src/vim9expr.c
+++ b/src/vim9expr.c
@@ -496,6 +496,7 @@
 	int	    idx;
 	int	    gen_load = FALSE;
 	int	    gen_load_outer = 0;
+	int	    outer_loop_idx = -1;
 
 	name = vim_strnsave(*arg, end - *arg);
 	if (name == NULL)
@@ -520,6 +521,7 @@
 	    {
 		type = lvar.lv_type;
 		idx = lvar.lv_idx;
+		outer_loop_idx = lvar.lv_loop_idx;
 		if (lvar.lv_from_outer != 0)
 		    gen_load_outer = lvar.lv_from_outer;
 		else
@@ -544,7 +546,8 @@
 	    res = generate_LOAD(cctx, ISN_LOAD, idx, NULL, type);
 	if (gen_load_outer > 0)
 	{
-	    res = generate_LOADOUTER(cctx, idx, gen_load_outer, type);
+	    res = generate_LOADOUTER(cctx, idx,
+					 gen_load_outer, outer_loop_idx, type);
 	    cctx->ctx_outer_used = TRUE;
 	}
     }