win32: ReplaceFile() is not the right thing either.

Sometimes unifdef calls replace() when the target filename does not
exist, in which situation ReplaceFile() fails. So it is easier to
call remove() and rename() and not worry about atomic replacement.