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/gui_dwrite.cpp b/src/gui_dwrite.cpp
index 83acdab..62d23e7 100644
--- a/src/gui_dwrite.cpp
+++ b/src/gui_dwrite.cpp
@@ -59,7 +59,7 @@
 #endif
 
 #ifdef DYNAMIC_DIRECTX
-extern "C" HINSTANCE vimLoadLib(char *name);
+extern "C" HINSTANCE vimLoadLib(const char *name);
 
 typedef int (WINAPI *PGETUSERDEFAULTLOCALENAME)(LPWSTR, int);
 typedef HRESULT (WINAPI *PD2D1CREATEFACTORY)(D2D1_FACTORY_TYPE,
@@ -1212,8 +1212,8 @@
 {
 #ifdef DYNAMIC_DIRECTX
     // Load libraries.
-    hD2D1DLL = vimLoadLib(const_cast<char*>("d2d1.dll"));
-    hDWriteDLL = vimLoadLib(const_cast<char*>("dwrite.dll"));
+    hD2D1DLL = vimLoadLib("d2d1.dll");
+    hDWriteDLL = vimLoadLib("dwrite.dll");
     if (hD2D1DLL == NULL || hDWriteDLL == NULL)
     {
 	DWrite_Final();