Eliminate directory creation confusion and patch CreateDirectoryA.

The existing calls to win32_utf8's custom CreateDirectory function assumed that the directory part ended at the last (back)slash. This, however, is not how CreateDirectory is supposed to operate - it interprets the *entirety* of the string as a directory name.

This fixes CreateDirectoryU to work as intended, and creates a new function, dir_create_for_fn, which should be used if the old behavior is desired.

With a fixed function, we can now do IAT patching for CreateDirectoryU. This is indeed necessary for games from th125 on -  the initial creation of the games' AppData directory otherwise would fail if a user name contains non-ASCII characters.
win32_utf8: Add GetModuleFileNameEx().
Use the MulDiv algorithm to determine the font size for adjusting dialog items.

Um... yeah, this fixes some cutoffs with certain Korean text, at the expense of slightly overcalculating the width for Latin characters.

Shrug.
Patch Win32 dialog font sizes.

... which is only necessary because drywall messed up the font settings in custom_e.exe in the th095 English patch.

(If you ask for "ARIAL" 4pt, you get Fixedsys in its default size. You can guess what happens if you replace "ARIAL" with a proper font name.)