Improve support for data sets in C++ tools

- If a data set does not set the number of columns, the framework now
  leaves it uninitialized (does not call startData() etc.), and the tool
  can check this when processing the frame.
- Make it possible to specify an output file in a tool unit test without
  actually testing the contents of the file.  This supports testing
  tools that only produce data in response to certain output options
  being set.
- Add support for specifying a comparison tolerance for a data set in a
  unit test.

Change-Id: I49794c93336c22c07f1a745d28d1b4f6f856b25b