patch 8.2.4354: dynamic loading of libsodium not handled properly

Problem:    Dynamic loading of libsodium not handled properly.
Solution:   Fix has() and :version. Show an error message when loading fails.
            Fix memory leaks. (Ken Takata, closes #9754)
diff --git a/src/evalfunc.c b/src/evalfunc.c
index db0d1ce..31205ea 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -5997,7 +5997,7 @@
 #endif
 		},
 	{"sodium",
-#ifdef FEAT_SODIUM
+#if defined(FEAT_SODIUM) && !defined(DYNAMIC_SODIUM)
 		1
 #else
 		0
@@ -6318,6 +6318,10 @@
 	else if (STRICMP(name, "tcl") == 0)
 	    n = tcl_enabled(FALSE);
 #endif
+#ifdef DYNAMIC_SODIUM
+	else if (STRICMP(name, "sodium") == 0)
+	    n = sodium_enabled(FALSE);
+#endif
 #if defined(FEAT_TERMINAL) && defined(MSWIN)
 	else if (STRICMP(name, "terminal") == 0)
 	    n = terminal_enabled();