KWSys 2013-08-06 (deec6b8a)

Extract upstream KWSys using the following shell commands.

$ git archive --prefix=upstream-kwsys/ deec6b8a | tar x
$ git shortlog --no-merges --abbrev=8 --format='%h %s' beef6819..deec6b8a
Brad King (1):
      e39f85e0 SystemTools: Activate EnableMSVCDebugHook under CTest

Burlen Loring (1):
      1d882d4c SystemInformation : Better stack trace

Patrick Gansterer (2):
      89e42c36 SystemTools: Remove duplicate code for parsing Windows registry keys
      deec6b8a SystemTools: Add a function to get subkeys of a Windows registry key

Sean McBride (1):
      4c4f8a9e Supress clang warnings about dynamic exception specifications

Change-Id: I37367dc5db58818d5954735e00c6d523a1dd1411
Merge branch 'upstream-kwsys' into update-kwsys
Add support for new Windows CE compiler

The new compiler versions do not need corelibc.lib as a default
link library and a architecture detection workaround.
cmake-gui: Fix build rules for Qt5 on Windows

Set policy CMP0020 to NEW to get WinMain from Qt.  Fix the documentation
custom command PATH for cmake-gui to find the Qt5 DLLs.
Include cmMakefile.h before cm*Lexer.h to get stdint.h first

Some generated cm*Lexer.h headers define preprocessor macros normally
provided by <stdint.h>.  The latter is included indrectly by cmMakefile.h
since commit 2268c41a (Optimize custom command full-path dependency
lookup, 2013-08-06).  Adjust the order to avoid redefinition warnings.
VS11: Add support for Windows CE SDKs

Allow additional generator platforms for the installed WinCE SDKs.
Skip CTestLimitDashJ test on Borland

The Borland-built CTest binary has trouble running many instances of
itself in parallel, making the test unreliable.  No particular recent
change appears to be the culprit and the failure is not reliably
reproducible.  Just silence the failure for now by skipping the test.
CTest: create one output file per memcheck (#14303)

The output file used for memory checker runs must be unique for every test run
in parallel, so simply make them unique for every test run. Simply use the test
index to avoid collisions.
Add RunCMake.Syntax test to cover argument parsing

Test basic unquoted and quoted argument parsing cases including failure
on an unterminated string and an unterminated command invocation.  Also
cover arguments not separated by any spaces, which is accidentally
allowed by the current parser.
cmListFileLexer: Fix line number after backslash in string

If a line inside a string ends in a backslash count the following
newline character as a line increment.  Add a test covering this case to
verify that subsequent line numbers are correct.
cmListFileLexer: Split normal and legacy unquoted arguments

Match legacy arguments separately.  Add macros to simplify and clarify
matching rules.
cmListFileArgument: Generalize 'Quoted' bool to 'Delimeter' enum

Replace the boolean value that indicates whether an argument is unquoted
or quoted with a generalized enumeration of possible argument types.
For now "Quoted" and "Unquoted" remain the only types.
Add RunCMake.Syntax test cases for command invocation styles

Cover commands with whitespace present in allowed combinations.
Also cover command error cases such as two on one line.
cmListFileCache: Convert CMake language parser to class

Refactor the parser implementation into a class to make
it easier to extend.
Warn about arguments not separated by whitespace

Teach the lexer to return tokens for whitespace.  Teach the parser to
tolerate the space tokens where whitespace is allowed.  Also teach the
parser to diagnose and warn about cases of quoted arguments followed
immediately by another argument.  This was accidentally allowed
previously, so we only warn.

Update the RunCMake.Syntax test case StringNoSpace expected stderr to
include the warnings.
Warn about unquoted arguments that look like long brackets

In the future CMake will introduce Lua-style long bracket syntax.
Warn about unquoted arguments that in the future will be treated
as opening long brackets.

Teach the RunCMake.Syntax test to cover such cases and ensure that the
warning appears.
cmListFileLexer: Modify flex output to avoid Borland warning

Remove the "yyscanner = NULL" assignment from the end of the
yylex_destroy function because Borland warns that the value is never
used.
variable_watch: Store client data as pointers

The STL containers create extra copies which makes keeping track of the
owner of the client data much messier.
variable_watch: Add a deleter for the client data

The client data is arbitrary and the callback may be called an
unspecified number of times, so the cmVariableWatch must be the one to
delete the client data in the end (if it is needed at all).
variable_watch: Match client_data when finding duplicates

If a callback has the same data as another call, we don't want to delete
the old callback. This is because if the client_data is the same, it
might get deleted causing the new client_data to be bogus. Now, AddWatch
will return true if it will use the watch, false otherwise. Callers
should check the return value to know whether client_data was adopted by
the watch or not.