Some code refactoring in ShellExecAsUser() function.
Some more code refacting in COM functions.
ShellExecAsUser: Implemented hack to allow the new process to start in the foreground. It appears that if we allow EXPLORER.EXE to set the foreground window, then this right will be inherited by the new process, though this isn't clear form the MSDN documentation. Based on an idea by "justanotheranonymoususer".
Moved all source files into the "src" folder.