Build fix after RuleActions move to data namespace
TestFixture::CreateTemporaryDirectory(): Use mkdtemp()

... instead of the obsolescent tmpnam().
Add util::OptionSpecification/OptionIterator

... convenience classes for command line option parsing. Needed, since
getopt_long() isn't POSIX.
ham: Use new option parsing classes, add debug option support

... for 'a'/'c'/'m'. Only 'm' does something yet.
SequentialSet: Add empty(), positional insert()
MakeTarget: Add parents, pendingDependenciesCount, and makeState
Processor: WIP fleshing out BuildTargets()
SequentialSet: Change interface to Java-style
SequentialSet: Add RemoveAt()
Processor::BuildTargets(): Fix infinite loop
Processor::_MakeTarget(): Print bound path instead of target name
ham: Call BuildTargets() stage
Processor: Fix comment
Processor: Better support for NoUpdate targets

We mark them very old to avoid targets depending on them not to be
rebuilt unnecessarily.
ham: Improve parsing of debug options
StringList::Join(): Simplify and add version with a separator
PathTest::Make(): Missing commas in testDataContext
TargetPool: Add LookupOrCreate() StringList version

Also move both versions to the source file.
Leave: Make _EvaluateString() public

The code should probably be moved to a separate file.
More work on actually making targets

* RuleActionsCall: Add targets property.
* FunctionCall::Evaluate():
  - Provide the target list needed by the RuleActionsCall constructor
    now.
  - Change order of rule instructions and actions handling. It is
    important to do the actions registration first, since the
    instructions may call other actions, which would then be registed
    first.
* Processor:
  - Move some debug option variables to inner class DebugOptions, since
    they need to be accessed elsewhere as well.
  - Add inner class Command, which represents an actions command
    execution.
  - Add inner class TargetBuildInfo which contains the Commands for a
    single target.
  - Add inner class TargetBuilder which tracks/executes the commands
    of targets currently being built.
  - _MakeTarget() creates and returns a TargetBuildInfo now, which is
    handled by BuildTargets(), which in turn uses TargetBuilder.

Still very much a WIP. The actions and commands are printed correctly,
save where not yet handled actions modifiers are used.