Compatibility.h: Move into behavior namespace
Compatibility.h: Move COMPATIBILITY_MASK_ALL to anonymous enum
Add Behavior

It describes the behaviors of the different jam/ham versions. This
allows for better checks where different behaviors are implemented and
a more fine-grained control, should that ever be needed.
EvaluationContext::SetCompatibility(): Update behavior, too
BuiltInRules: Echo: Support jam behavior

Print a space after the last parameter, if jam compatible behavior is
requested.
StringListOperations: Fix root replacer

* Don't prepend root, if parameter is ".".
* Use boost jam behavior and append the slash after the root, if it
  doesn't already end with a slash. Also support the jam behavior of
  always appending the slash, if that behavior is requested.
* Pass the behavior to StringListOperations::Apply()/_AssemblePath().
PathReplacersMultiple: Add more tests
PathReplacersMultiple: More tests