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.
stringapi: Use strings for AddString methods

It gets turned into a string anyways, so pass them in.
stringapi: Use strings for test names
stringapi: Use strings for the languages
stringapi: Use strings in Convert methods in LocalGenerator

The C strings were turned into std::strings internally anyways and most
callers used .c_str().
stringapi: Use strings in target name
FindCUDA: Fix a typo
stringapi: Use string for OS X resource names
stringapi: Accept strings when MD5 hashing data
stringapi: Use strings for output names in AddCustomCommandToOutput
stringapi: Use strings for AddSubdirectory paths
stringapi: Use strings for cache paths as arguments