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
stringapi: Use strings in CPack generator parameters

Most of these are turned into strings in the body of the method
(multiple times in some cases). Accept strings to simplify the API and
keep string construction down.