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.
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="".
Merge branch 'master' into compiler-change-cleanup
Merge topic 'xcode-organize-sources' into next

f6a8983 Xcode: Sort source files
0816cae Xcode: Fix nested source group handling (#12943)
Merge topic 'compiler-change-cleanup' into next

b898554 Merge branch 'master' into compiler-change-cleanup
bff3d9c 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)