MakeTarget: Add fileStatus property
TargetBinder::Bind(): Also return/set the file status

Adjust test accordingly.
Jamfile: Fix build
ActionsDefinitions: Fix crash: variables are optional
Multiply/StringOperations/Subscripts: Improve test code

* Since "if" lumps together string lists containing only empty strings
  with empty string lists, we don't get different results for the two.
  Use a "for" loop to discriminate instead.
* Fix StringOperations "E" operator test results. For several cases the
  correct result is actually a string list with an empty string instead
  of an empty list.
StringListOperations::Apply(): Fix empty operator

When the empty operator parameter is and empty string, the result list
is supposed to contain an empty string instead of being empty.
Include: Implement target binding and NoCare support
Parser: Add ParseFile()
Add util::SequentialSet
[Make]TargetMap: Use SequentialSet instead of std::set
Add RuleActions

Also move the kActionFlag* constants into this class and make them enum
members instead.
Target: Add convenience getters for the flags
Add MakeException
Flesh the make process out a bit

* MakeTarget:
  - Replace fileStatus property by a time and a boolean flag to indicate
    the file's existence.
  - Add leafTime property for propagating the times of leaves for LEAVES
    targets.
  - Add dependencies and includes.
  - Add state, the target's state in the make process.
* Processor:
  - Add setters for various options/parameters.
  - Rename BindTargets() to PrepareTargets() and implement it. Not
    complete yet. Header scanning is missing and some of the special
    handling for targets flagged in some way (e.g. temporary).
* Start implementation of ham main(). It parses most of the command line
  options and invokes the first make process steps.

When fed jam's Jambase, ham is able to digest its own build system, now.
Doesn't do anything yet, though.