Remove no longer needed lexer test
StringListOperations.h: Missing include
TestFixture: Add HAM_TEST_THROW, update HAM_TEST_VERIFY
TestEnvironment: Add optional property jamExecutable
TextFixture: Add methods to execute jam code

Code can be executed via the ham library or via a specified executable.
ham-tests: Add support for using a specified jam executable

* ham-tests: Add -j option for specifying a jam executable.
* RunnableTest: Add IsJammable() returning whether the test can be
  executed via jam as well. Implement that in DataBasedTest.
* TestRunner: If a jam executable has been given, skip tests that
  cannot be run with a jam executable.
TextFixture: Add comment
ham-tests: First test name argument was skipped
DataBasedTest: Register each data sets as a test case

They will be simply numbered (1 ...).
TestRunner::AddTest(): Fix adding RunnableTests
SingleReplacer: Add more test cases
TestException: Use large buffers for snprintf()
VariableExpansionTest: Translate selector tests to data based

Also adjust them so that jam passes them.
StringListOperations: Fix path selectors according to tests

* Define the enum masks by explicitly bit-or the included operations.
* Rename SELECT_PARENT_DIRECTORY to TO_PARENT_DIRECTORY. It actually
  isn't a selector.
* Parse(): Missing parameter for root.
* Apply(): Fix TO_PARENT_DIRECTORY behavior (for Unixish platforms at
  least). It just removes basename, suffix and archive member from the
  path.
* _DisassemblePath():
  - Grist really needs a closing '>'. Otherwise it is treated as
    directory/basename/...
  - The archive member doesn't contain the parentheses.
* _AssemblePath():
  - Make sure grist is enclosed in '<' ... '>'. Makes a difference for
    the "G=..." replacers, since it allows parameters with or without
    the '<'/'>'.
  - (Unixish platforms) Use the root replacer when the directory part
    isn't absolute.
  - Don't append a '/' after the directory part if the archive member
    follows directly.
  - Enclose the archive member in parentheses.
SingleReplacer -> PathReplacersSingle
Split PathReplacersSingle into one file per operator
PathReplacersSingle*: Add more tests
DataBasedTestParser: Support multi-line arguments

The parser does now support directives, which are lines starting with
"#!" followed by the particular directive symbol. Currently "#!{" and
"#!}" are supported, which mark the beginning respectively the end of
a multi-line argument. All lines in between are considered a single
line.
DataBasedTestParser: Add repeat directive

In test case input or output it copies the corresponding line of the
previous test case input/output.
Add PathReplacersMultiple

The very beginnings of a file with test cases for multiple replacer
operations.