Reduce duplicate implementations of argument handling on Windows
On windows we currently ignore arguments to hs_init/main's argv and instead get the arguments from the windows api when they are requested from the Haskell side.
- Passing custom arguments to hs_init when not using hs_main might behave unexpected (The haskell und RTS side see different arguments).
- Duplication of code to simulate filtering of Arguments by the RTS on the Haskell side.
- Behavior between Linux and Windows might differ as result of the above (eg #13287 (closed))
Instead we can get the UTF16 encoded arguments inside of hs_main from the windows API and pass them along to the RTS UTF8-encoded. This allows argument handling to be fairly uniform between Linux and Windows and enables us to accept hs_init arguments on Windows.