Fix env handling in windows

Completely rewrite env handing for windows in luvi.  All code is now unicode aware and assumes UTF8 inside lua strings and WCHAR strings in C.

Also windows has the idea of hidden variables that are needed to do proper path resolving (see https://github.com/luvit/luvit/pull/510).  This adds a flag to `env.keys(true)` to include hidden keys when enumerating.
i think we should be in the habit of doing 

    if (something) {
    }

always doing the braces. It helps with debugging by being able to just insert a line and should help manage the leaks better.