cmake-gui: Fix handling of missing CMAKE_EXTRA_GENERATOR (#14804)

Since commit 1a1b737c (stringapi: Use strings for generator names,
2014-02-24) cmExternalMakefileProjectGenerator::CreateFullGeneratorName
expects a std::string instead of const char*.  When no extra generator
name is available, pass an empty string to avoid NULL dereference.
cmCustomCommand: Return std::string from GetWorkingDirectory
cmGlobalXCodeGenerator: Simplify handling of multiple outputs

Make the multiple output pair map more local.  Generate it where we
have the current configuration available.
Generalize cmCustomCommandGenerator to more fields

Until now the cmCustomCommandGenerator was used only to compute the
command lines of a custom command.  Generalize it to get the comment,
working directory, dependencies, and outputs of custom commands.  Update
use in all generators to support this.
cmTarget: Don't create duplicate backtraces in CMP0046 warning
Merge branch 'fix-CMP0046-warning' into release
Merge topic 'fix-CMP0046-warning'

d83245a3 cmTarget: Don't create duplicate backtraces in CMP0046 warning
Merge topic 'string-apis-fix-cmake-gui'

ae32622b cmake-gui: Fix handling of missing CMAKE_EXTRA_GENERATOR (#14804)
Merge topic 'generalize-cmCustomCommandGenerator'

bc993f27 Generalize cmCustomCommandGenerator to more fields
9a5c5544 cmGlobalXCodeGenerator: Simplify handling of multiple outputs
d45e7f34 cmCustomCommand: Return std::string from GetWorkingDirectory
Merge branch 'release'