Merge branch 'master' into next
tests: Add variable expansion tests

There are some corner cases in variable expansion which would be nice to
capture before going and rewriting the variable expansion code.
tests: Test string(CONFIGURE) expansion with escaped quotes

*sigh* Not at all intuitive. Without @ONLY, quotes get escaped, but lose
their escape when passing through the lex/yacc parser.
tests: Test @ expansion with variable references in it

Yet another difference between string(CONFIGURE) and configure_file().
@ONLY makes sense, but string(CONFIGURE) will dereference the variable
as well while configure_file will not.
tests: Test @ expansion when the variable is empty

Yet another corner case to handle in any future parser rewrites.
tests: Comment variable_expansion test logic

It's not obvious why there are differences between the tests when moving
some lines around. Also remove unused variables from the *File tests.
tests: Make the file expansion more rigorous
tests: Add variable expansion test for @ONLY with empty expansions
tests: Move variable expansion into the Syntax test
tests: Remove variable_expansion test reference
tests: Test parentheses in ENV variables
stringapi: Use strings for property names

Property names are always generated by CMake and should never be NULL.
stringapi: Use strings for variable names

Variable names are always generated by CMake and should never be NULL.
stringapi: Accept strings in cmStrCmp
stringapi: Accept string parameters in methods which store to strings
makefile: Remove an unused method
genex: Store predicates as a map for faster searching

May warrant a fast path for predicates which more frequently.
stringapi: Use strings for source names
makefile: Use std::set for source and header extensions

Most of the time, the structure is searched through and it is static. To
optimize searching, use a set instead.
stringapi: Use strings for TryFullPath