* Convert both arguments to Unicode and use the wide Windows API. This allows using both string and Unicode paths.
* Try all three variants for file replacement (`MoveFileTransacted`, `MoveFileEx` and `os.rename`) and fall back to the next one in case of failure. This fixes renaming on filesystems where atomic operations are not supported.
Closes #8623 and #8913.