patch 8.2.0818: Vim9: using a discovery phase doesn't work well

Problem:    Vim9: using a discovery phase doesn't work well.
Solution:   Remove the discovery phase, instead compile a function only when
            it is used.  Add :defcompile to compile def functions earlier.
diff --git a/src/structs.h b/src/structs.h
index 69233a9..e58e644 100644
--- a/src/structs.h
+++ b/src/structs.h
@@ -1516,6 +1516,9 @@
 #if defined(FEAT_EVAL) || defined(PROTO)
 typedef struct funccall_S funccall_T;
 
+# define UF_NOT_COMPILED -2
+# define UF_TO_BE_COMPILED -1
+
 /*
  * Structure to hold info for a user function.
  */
@@ -1525,7 +1528,7 @@
     int		uf_flags;	// FC_ flags
     int		uf_calls;	// nr of active calls
     int		uf_cleared;	// func_clear() was already called
-    int		uf_dfunc_idx;	// >= 0 for :def function only
+    int		uf_dfunc_idx;	// UF_NOT_COMPILED, UF_TO_BE_COMPILED or >= 0
     garray_T	uf_args;	// arguments, including optional arguments
     garray_T	uf_def_args;	// default argument expressions