Fix cmSystemTools::RenameFile delay on Windows

The parent commit made RenameFile more robust on Windows by trying a few
times after failure and a delay between tries.  This introduced a major
slow down by delaying/trying a long time even in cases that will never
succeed.  Instead try again only if the failure may be temporary.
Merge topic 'fix-atomic-rename-on-Windows' into next

80c52f3 Fix cmSystemTools::RenameFile delay on Windows
Fix cmSystemTools::RenameFile race on Windows

Since commit d46d8df0 (Re-implemented cmGeneratedFileStream to look like a
real stream and replace the destination file atomically, 2004-11-03) our
RenameFile implementation tries to deal with MoveFile not replacing
read-only files.  In order to avoid the Get/SetFileAttributes pair we used
stat to test for existence of the destination file.  This has a race in
which the destination could be created between the test for existence and
the MoveFile call.

Remove the stat call and use GetFileAttributes to detect whether the file
exists.  This shortens the race but does not eliminate it.  Use a loop to
try multiple times in case we lose the race.  While at it, drop Win9x
support and always use MoveFileEx.
Merge topic 'fix-atomic-rename-on-Windows' into next

59b568e Fix cmSystemTools::RenameFile race on Windows
Merge branch 'fix-atomic-rename-on-Windows' into add-ExternalData-module
Fix Module.ExternalData test on Cygwin

In ExternalData_URL_TEMPLATES add a leading slash to the path after
file:// only if the path does not already start with one.
Fix Module.ExternalData test on VS 6

Run the test with the ctest --build-noclean option.  The test
CMakeLists.txt file already uses file(REMOVE_RECURSE) to clean out
downloaded data anyway.  Some file removed by "msdev ... /clean" causes
CMake to re-run in the middle of the build step and file(REMOVE_RECURSE)
wipes out already-generated files.
ExternalData: Attach download rules to content links in IDEs

Each data file to be created in the build tree corresponds one-to-one with
a raw file or content link in the source tree.  Use the MAIN_DEPENDENCY of
add_custom_command to attach the build rule to the source tree file.  This
looks much nicer in the IDE project file browser and avoids ".rule" files.
Merge branch 'vs6-rule-files' into add-ExternalData-module
Merge topic 'add-ExternalData-module' into next

5484c60 Merge branch 'vs6-rule-files' into add-ExternalData-module
1fd8d01 ExternalData: Attach download rules to content links in IDEs
a6d3ffc Fix Module.ExternalData test on VS 6
aed590a Fix Module.ExternalData test on Cygwin
06e8ded Merge branch 'fix-atomic-rename-on-Windows' into add-ExternalData-module