StringListTest::Concatenate(): Add test case

appending sublists with shared buffer.
StringList::_Detach(): Fix reference count check
RunnableTest::TestCaseCompatibility(): Add Ham support param

* The new output parameter allows to specify whether ham supports the
  behavior tested in this test case.
* DataBasedTestParser: Add a "!ham" parameter for the "#!compat"
  directive, specifying that the test case behavior is not supported by
  Ham.
* DataBasedTest: Extend accordingly.
* TestRunner::_RunTestCase(): When using the Ham library, consider the
  new RunnableTest::TestCaseCompatibility() parameter.
variable_expansion/Recursion: Add Ham specific jam test cases

Ham doesn't implement Jam or Boost.Jam join semantics -- both of which
seem broken -- but instead implements the functionality consistent with
the other operations.
StringListOperations::Apply(): When doing nothing apply maxSize

... nonetheless. Seems logical and avoids the need to specially handle
this case.
Leaf::_EvaluateVariableExpression(): Implement recursion
Jamfile: Add missing Behavior.cpp
TestFixture::ValueToString(): More versions

... for std::pair<size_t, size_t> and a std::vector thereof.
Add simple RegExp class with some tests