Added IAppVisibility implementation that monitors the changes to the start Menu visibility
Add new StartWindowActivation class which monitors Start Menu visibility, and when windows attempts to show the start menu we Toggle the visibility of WinLauncher, which hides the real start menu
Correctly clean up when exiting to due to exception
Correctly clean up when exiting by quitting
NOTE 1: The WIN global key hook doesn't work on my machine. It definitely doesn't work on my ARM machine. This seems to remove need to have WIN key global keyboard hook. I didn't remove WIN key, but this implementation is I think more robust and platform independent because it doesn't inject DLLs into all processes and also supports any way that the start menu gets activated today, (gestures, hot keys, programmatic, etc.)
NOTE 2: This uses the Vanara.Pinvoke.xxx library which is all of the PInvoke defintions for windows and which made it trivially easy to implement this. I think it might be good to replace all of the random DllImports in WinLaunch with a standard library like this. Figuring out all of the appropriate COM attributes to make the IAppVisibility work without this library would have been very error-prone and laborious.
Thanks for building WinLaunch! :)