shell32: Add a test to show the IShellLink_GetIDList returns a copy of the IDList, remove an incorrect comment and fix a memory leak.

Found by Valgrind.
diff --git a/dlls/shell32/tests/shelllink.c b/dlls/shell32/tests/shelllink.c
index 2535471..bb2d5b3 100644
--- a/dlls/shell32/tests/shelllink.c
+++ b/dlls/shell32/tests/shelllink.c
@@ -207,6 +207,7 @@
         }
         if (ret)
             ok(lstrcmpi(buffer,str)==0, "GetIDList returned '%s'\n", buffer);
+        pILFree(tmp_pidl);
     }
 
     pidl=path_to_pidl(mypath);
@@ -214,6 +215,8 @@
 
     if (pidl)
     {
+        LPITEMIDLIST second_pidl;
+
         r = IShellLinkA_SetIDList(sl, pidl);
         ok(SUCCEEDED(r), "SetIDList failed (0x%08x)\n", r);
 
@@ -223,7 +226,14 @@
         ok(tmp_pidl && pILIsEqual(pidl, tmp_pidl),
            "GetIDList returned an incorrect pidl\n");
 
-        /* tmp_pidl is owned by IShellLink so we don't free it */
+        r = IShellLinkA_GetIDList(sl, &second_pidl);
+        ok(SUCCEEDED(r), "GetIDList failed (0x%08x)\n", r);
+        ok(second_pidl && pILIsEqual(pidl, second_pidl),
+           "GetIDList returned an incorrect pidl\n");
+        ok(second_pidl != tmp_pidl, "pidls are the same\n");
+
+        pILFree(second_pidl);
+        pILFree(tmp_pidl);
         pILFree(pidl);
 
         strcpy(buffer,"garbage");