variable_expansion/Recursion: Add more tests

... demonstrating that the current implementation is broken for colons
in nested expressions.
Leaf: Fix expansions with nested colons
StringList: Add << ostream operator
RuleDefinition::Dump(): Simplify
Leaf.cpp: Minor style fix
Time: Add Time::ToString()
Add code::Constant

Not needed for representing Jam code, since we always need Leaf in this
case, but for internal use.
MakeTarget: Split state into state and fate

Update Processor accordingly.
Processor: Implement header scanning
Add called actions to Target

* Move RuleActions to data.
* Add RuleActionsCall, representing an invocation of an actions call.
* Add getters to RuleActions.
* Target/ActionsDefinition: Add RuleActionsCalls when a rule with
  actions is invoked.