Convert Windows unicode paths to utf8 and back

Also had to add another API function to make `io.fopen` use _wfopen on Windows so that we can open files at non ANSI paths. Which is like, most paths :P
Tidy main (NOTE: still a hideous mess)

It’s just not worth the time it would take to make this cross platform mess: neat.
For now, os.fork on Windows does nothing

Eventually we’d like to thread it or something, since there is no fork on Windows.
Prevent assert(!..) crashing on Windows

Disabling asserts for this file completely (only on Windows) seemed the best option.
Fix make on Windows rebuilding dirs everytime
Don’t echo user’s password when they type it

Shame we can’t instead echo asterixes, couldn’t seem to make that work.
Tidy resolver.lua
Don’t result in eg. /foo//bar