Properly handle UTF-8 in Win32 console

The previous way was to set the codepage to UTF-8, however, this does
not work properly on some versions of Windows.

Instead, this catches reads / writes on of_std* on the lowlevel,
interprets it as UTF-8, converts it to / from UTF-16 and then uses
ReadConsoleW() / WriteConsoleW().

Surrogates being cut in the middle is not properly handled yet, this
will be implemented in a follow up commit.