Implements program_directory for Win32

This also behaves exactly as GM8.1 it is always the executable directory
regardless of the OS working directory. So in run/debug/design it is
usually the temp folder and in compile mode when being executed it is
always exactly where the exe is located. The only problem is now there is
no Linux/*nix equivalent of Win32's GetModuleFilename, and it is variable so we can not have it in the compiler like Polygonz previously had working_directory. I also went back
and tested working_directory and I can confirm that mine works EXACTLY the
same as GM8,1, I created a show_message(working_directory) example in both
GM8.1 and ENIGMA and launched them from different directories than where
they are located at, and ENIGMA and GM8.1 always reported the OS working
directory. So the behavior of these functions is 100% correct now.