cmCTestBuildAndTestHandler: Refactor local loop var
cmCTestBuildAndTestHandler: Refactor output capture

Use an RAII class to add and remove callbacks.
cmSystemTools: Rename ErrorCallback to MessageCallback

Clarify that it is the callback for the cmSystemTools::Message API.
Rename callback clients too.
cmSystemTools: Simplify InterruptCallback definition

Use the typedef to declare the member instead of duplicating the type.
Use default initialization instead of an explicit zero initializer.
cmSystemTools: Add callback for Stderr

Factor a common callback type out of StdoutCallback.  Add an equivalent
StderrCallback.  While at it, use "size_t" for the data length instead
of "int".

Teach "ctest --build-and-test" to capture the Stderr callback because
output sent through it is part of the logical CMake process output.
cmake-gui: Capture cmSystemTools::Stdout and Stderr

Output sent through these APIs is logically part of the CMake process
output.  Capture it with callbacks and display it in the cmake-gui
output window along with other messages.
execute_process: Send stderr through cmSystemTools::Stderr

Give cmake-gui and ctest --build-and-test a chance to capture the output
instead of sending it to the real stderr.
Help: Add notes for topic 'cmake-gui-capture-output'
Merge topic 'cmake-gui-capture-output' into next

209cd475 Help: Add notes for topic 'cmake-gui-capture-output'
d7c69246 execute_process: Send stderr through cmSystemTools::Stderr
92ddf0c9 cmake-gui: Capture cmSystemTools::Stdout and Stderr
f52b5ae3 cmSystemTools: Add callback for Stderr
a9ae1d7a cmSystemTools: Simplify InterruptCallback definition
73b13f56 cmSystemTools: Rename ErrorCallback to MessageCallback
7577a542 cmCTestBuildAndTestHandler: Refactor output capture
b1b4d761 cmCTestBuildAndTestHandler: Refactor local loop var