Merge branch 'dev/string-apis' into dev/speed-merge

* dev/string-apis: (41 commits)
  ccmake: Remove unused parameter to LoadCache
  stringapi: Use strings in XCode::SetComment
  stringapi: Take strings in GetRecursiveMakeCall
  stringapi: Accept strings in ConvertToNinjaPath
  stringapi: Add string overload for AppendFlags
  stringapi: Use strings for feature arguments
  stringapi: Return a string reference for the configuration
  stringapi: Pass configuration names as strings
  cmGeneratorExpression: Tokenize over strings
  Directories: Take strings when setting directories
  strings: Remove cmStdString references
  stringapi: Take strings in escaping functions
  stringapi: Take strings for utility command names
  cmTargetLinkLibrariesCommand: Use a string argument
  cmTarget: Remove the project argument to FindTarget
  stringapi: Use strings for globbing parameters
  stringapi: Use strings for search paths
  stringapi: Use strings for VS project names
  stringapi: Use strings for generated file stream names
  stringapi: Use strings for documentation names
  ...

Conflicts:
	Source/cmCommandArgumentParserHelper.cxx
	Source/cmCommandArgumentParserHelper.h
	Source/cmNinjaTargetGenerator.cxx
cmTarget: Use else/if trees rather than an if tree

Skips lots of unnecessary string comparisons.
cmTarget: Factor out common code
cmTarget: Fast path for regular properties
cmTarget: Sort special property checks

The LINK_LIBRARIES property is by *far* the most popular. Move it to the
top. TYPE is second, but with more generator expression usage, that may
change in the future.
cmTarget: Use static strings for special property names

The function is called enough that the std::string/cstr comparisons are
expensive from the strlen. Cache the strings for faster comparisons.
Merge branch 'dev/target-property-speedups' into dev/speed-merge

* dev/target-property-speedups:
  cmTarget: Use static strings for special property names
  cmTarget: Sort special property checks
  cmTarget: Fast path for regular properties
  cmTarget: Factor out common code
  cmTarget: Use else/if trees rather than an if tree