Xcode: Fix nested source group handling (#12943)

Teach the code path for nested sources build the group map key in the
same way as non-nested code path does.
Xcode: Sort source files

Since Xcode doesn't sort the files on its own, let's sort them in our
generator to make navigation easier.  Visual Studio, QtCreator, and
kdevelop all display files sorted.
Delete entire CMakeFiles directory when deleting CMakeCache.txt (#13756)

Since commit e015df7d (...delete CMakeFiles directory when cache is
deleted, 2006-02-20) we deleted the files in the CMakeFiles directory
when deleting CMakeCache.txt in order to reset the build tree to a fresh
state.  This allowed commit fd33bf93 (fix for bug 6102, allow users to
change the compiler, 2007-12-13) to delete CMakeCache.txt when the user
changes the compiler and CMakeFiles/CMake<lang>Compiler.cmake and other
platform information files would go with it to allow a fresh start.

Then commit 7195aca5 (Make platform information files specific to the
CMake version, 2012-08-24) moved the platform information files to a
subdirectory e.g. CMakeFiles/<version>/CMake<lang>Compiler.cmake where
<version> is the current CMake version.  This causes the compiler change
logic to fail to remove all old compiler information.  Then on the next
configuration CMake<lang>Compiler.cmake would set CMAKE_<lang>_COMPILER
back to the old value and re-trigger the compiler change logic.  This
causes an infinite loop of cache deletion and compiler reset.

Fix this simply by teaching cmCacheManager::DeleteCache to remove the
entire CMakeFiles directory recursively whenever it removes an existing
CMakeCache.txt.  This fully resets the build tree to configure with a
fresh compiler.
Merge branch 'empty-compiler-crash' into compiler-change-cleanup
Tests/RunCMake: Allow tests to control build tree behavior

Teach the run_cmake to allow tests to set a custom test build directory.
Also add an option to skip removing the build directory.
NAG: Use -PIC for Fortran position-independent code (#13932)

The Numerical Algorithms Group (NAG) Fortran compiler documents -PIC for
position-independent code.
VS,Xcode: Remove unused CMAKE_GENERATOR_* variables

Since the topic merged to master by commit 34a02846 (Merge topic
'ide-compiler-id', 2012-08-24), these variables are not used by
CMakeDetermine*Compiler.cmake for VS and Xcode generators.  Drop the
code that sets them.
Xcode: Drop check for circular target dependencies

The modern cmComputeTargetDepends guarantees there will by no cycles.
Drop the Xcode generator's check which only handled length 1 and 2
cycles anyway.
Xcode: Each target dependency edge needs a unique object (#13935)

Generate a unique PBXTargetDependency and PBXContainerItemProxy for
every edge in the dependency graph as required by the Xcode format.
Xcode only accidentally loads project files that re-use the same
PBXTargetDependency for every edge leading to a single target.  If one
is removed by hand in the IDE then Xcode may crash due to dangling
references from the others.

Since cmGlobalXCodeGenerator::AddDependTarget is called exactly once for
every edge in the target dependency graph we do not need to keep track
of which edges have been visited to avoid generating duplicates.
Test Unix Makefiles generator support for changing compilers

Add RunCMake.CompilerChange test to cover use of -DCMAKE_C_COMPILER=cc
to change the compiler of an existing build tree.  Also test for proper
failure with -DCMAKE_C_COMPILER="" and no CC in the environment.
Merge topic 'xcode-organize-sources'

f6a8983 Xcode: Sort source files
0816cae Xcode: Fix nested source group handling (#12943)
Merge topic 'NAG-Fortran-PIC'

c26ac22 NAG: Use -PIC for Fortran position-independent code (#13932)
Merge topic 'ide-compiler-vars-cleanup'

bed6c38 VS,Xcode: Remove unused CMAKE_GENERATOR_* variables
Merge topic 'compiler-change-cleanup'

e83e6a1 Test Unix Makefiles generator support for changing compilers
c307e1c Tests/RunCMake: Allow tests to control build tree behavior
2963c98 Merge branch 'empty-compiler-crash' into compiler-change-cleanup
1df09e5 Delete entire CMakeFiles directory when deleting CMakeCache.txt (#13756)
Merge topic 'xcode-target-depends'

b005140 Xcode: Each target dependency edge needs a unique object (#13935)
781ea6d Xcode: Drop check for circular target dependencies