[SHELL32]: CShellLink fixups Part 2: - Add COM inheritance for interfaces IExtractIconA/W, and add in comment the missing other ones, the ordering of which is given by the apitests/com/shell32. - Add proper support for the extra data block list (which is added at the end of the .lnk files), by using the API from shlwapi.dll: SH[Read|Write|Free]DataBlockList, SH[Add|Find|Remove]DataBlock. - Using this support, getting/setting the MSI data block becomes as simple as child's play, and opens the possibility for implementing support for the other types of blocks. - This in particular enables support for paths with environment variables for the link's target and icon: CORE-9236 #resolve - Fix all the "shell32_winetest shelllink" tests: CORE-7158 #resolve Some of the fixes are inspired from a patch by Katayama Hirofumi MZ. - Fix all the "shell32_apitest CShellLink" tests *but* those calling IExtractIcon::GetIconLocation(). - Implement a hackish substitute to the shell32!PathResolve API until someone writes a correct one (see the code & the FIXMEs for some ideas), possibly using the SHELL_xxx helpers in Wine's shellpath.c. - In CFSExtractIcon_CreateInstance: Because IShellLink::GetIconLocation can return no icon location, in case none is specified in the .lnk (proved by apitests), we have to call the shell link's IExtractIcon::GetIconLocation in order to retrieve the icon of its target (yes, some shortcuts are made like that, e.g. Notepad++ 6.9 one...).
- More fixes... - ... and a lot of documentation added in the code for you!