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.
Merge branch 'dev/fix-variable-watch-crash' into cmake-syntax

Resolve conflict in Source/cmVariableWatchCommand.cxx by integrating the
changes from both sides.
Merge topic 'cmake-syntax' into next

a613453 Merge branch 'dev/fix-variable-watch-crash' into cmake-syntax
bd08a48 Warn about unquoted arguments that look like long brackets
b2ac346 Warn about arguments not separated by whitespace
a89b8d9 cmListFileCache: Convert CMake language parser to class
5d155d2 Add RunCMake.Syntax test cases for command invocation styles
95c04da cmListFileArgument: Generalize 'Quoted' bool to 'Delimeter' enum
2362ea0 cmListFileLexer: Split normal and legacy unquoted arguments
0a7786a cmListFileLexer: Fix line number after backslash in string
6db5c8c Add RunCMake.Syntax test to cover argument parsing