Born from the ashes of D5360, extracted from the prototype D4259 comes StepHandle
This new object for interacting with steps in an ExecutionPlan sets us up to be able to handle more complex "key" structures which is needed for dynamic orchestration.
In addition to introducing this handle for keying in to step_dict, this diff attempts to clean up ExecutionPlan and ExecutionStep a bit.