[SHELL32] - Simplify SHELL32_CoCreateInitSF by letting the callers fill the PERSIST_FOLDER_TARGET_INFO. This lets us stop using _ILSimpleGetTextW in it which breaks the logic that pidls should be read only by their shell folder. Also add an overload for SHELL32_CoCreateInitSF that makes it simpler to create a shell folder with a csidl. - Add a SHELL32_BindToSF helper to share some logic that was duplicated in several shell folders. - Move SHELL32_GetCustomFolderAttributeFromPath, SHELL32_GetCLSIDForDirectory and SHELL32_GetFSItemAttributes, SHELL32_BindToFS to CFSFolder.cpp as these were fs specific. - These changes give finer control to shell folders for how the bind will be done and shares more logic that can be shared.
[SHELL32] - CDefViewBckgrndMenu : Add class to handle the background menu of the CDefView and handle stuff that previously were handled by CDefaultContextMenu. Let the shell folders fill their own part of the background context menu. - CDefView: Create a CDefViewBckgrndMenu instead of a CDefaultContextMenu which was completely wrong. - CDesktopFolder, CFSFolder: Implement returning the background context menu in CreateViewObject. Note that I am not completely sure that the callback should be adding the Properties item. - CDefaultContextMenu: Remove code that was moved to CDefViewBckgrndMenu and try to improve the overzealous debug prints regarding the shell extensions. CORE-12410, CORE-12472