Dynamic and strongly-typed variable support

Dynamic Variables may be updated during workflow execution (such as within a ForEach Loop Branch). This new support adds to static variable functionality.

Additionally, variables can now be strongly typed, if configured.

These updates maintain backwards compatibility.