Workload Steps have an optional context parameter

Fixes the previously non-concurrency safe way of sharing state between
workload steps. Now a workload step can specifically ask for a context
map which is created before and passed between each workload step.