[utils] Fix _windows_write_string (Fixes #2779)

It turns out that the function did not work for outputs longer than 1024 UCS-2 tokens.
Write non-BMP characters one by one to ensure that we count correctly.