[WF4] Execution property fixes: UnRegister errors. Add/remove validation.

-Checks that no children have been scheduled that haven't completed yet
 before allowing execution properties to be added to or removed from
 activity.
-Suppresses exceptions raised from UnRegister method on execution
 properties on activities that are part of a sub tree being terminated
 because an ancestor activity already faulted. Other exec props still
 have their Unregister method called.
-(When exception thrown from UnRegister when its called in the normal case
 the rest of the execution properties do not have their Unregister method
 called)
[WF4] Implemented Flowchart.

-The Flowchart activity orchestrates the execution of the FlowNode non
 Activity objects. Execution logic for each FlowNode subclass not very
 nicely split between the FlowNode and FlowChart classes. Longer comment
 in Flowchart.cs
-Added public class to System.Activities.Statements that takes the place
 of an undocumented class used in ms.net. An IDictionary<K,V>
 implementation that accepts null keys.
[WF4] Implemented StateMachine.

-Logic for StateMachine primarily implemented in internal StateActivity
 class. StateMachine creates one for each State object. The StateActivity
 takes on all Activities / Variables referenced in State and Transition
 objects.
-Note StateMachine uses the CancelChildren feature of WorkflowRuntime,
 the current implementation of which just terminates the children without
 following the intended graceful procedure.
-Added classes for StateMachine to System.Activities.Statements as no
 stubs present (StateMachine support was introduced in .NET 4.0.1.)
-Updated sources files for olive build system
-Few ActivityWithResult and NativeActivity<T> subclass fixes.
[WF4] Fixed order of metadata retrieval and Activity.Id generation.

-Updated Activity.Id generation
-Changed order that metadata is retrieved in relation to
  -Pub/imp children,
  -Handler Activity pub/imp ActivityDelegates,
  -Default Activity for pub/imp Variables
  -Expression Activity for Arguments
[WF4] Scoping rule fixes when Var.Default and Arg..Exp.. are custom Activities

-Found that when a custom Activity<T> is supplied to Argument.Expression
 and Variable.Default the scoping rules are different for accessing args,
 vars, delargs from it and its descendants.
-Found that when scheduling expression Activities like VariableValue etc
 as normal children they have different scoping rules to when they are on
 Argument.Expression and Variable.Default.
-Now track whether an Activity is a normal child, Arg.Expression or
 Variable.Default in its ActivityInstance via the ActivityLocation
 property.
-Now support new found behaviour. Moved logic to retrieve members in
 scope to special internal method in the ActivityInstance. Where
 Var.Value / Arg.Value etc expression Activities used to access such
 members on their parent Activities' ActivityInstances they now access
 these members in their own ActivityInstance. It recursively looks at the
 ancestor activities, pulling the members in scope while checking the
 ActivityLocation property of each.
-Added validation to ensure activities scheduled from NativeActivity by
 the user are that Activity's children, excluding Argument.Expressions and
 Variable.Defaults.
-Refactored the new tests (didn't commit initial version) for better code
 reuse. Other tests in the same files could be refactored similarly.
[WF4] Refactor Variable, Argument, ActivityDelegate tests.
[WF4] Draft of Cancellation support and tests.

-Cancellation is the attempted graceful early ending of a workflow or part
 thereof. Have draft support for cancelling a workflow from the host as
 well as child Activities from their parent.
-Incomplete so far - still working on failing tests. Need to investigate
 further what determines final ActivityInstanceState.
-Changes to NativeActivityContext, WorkflowApplication, WorkflowInstance
 need further testing and investigation.