Added StepExecutor class to allow users to add custom logic before/after each step.

See discussion in pull request #164 .
Ah understand. Possibly it's a good idea to turn off captured sync context stuff as well as this change. 

i.e
```csharp
Configurator.AsyncVoidSupportEnabled = false;
```

Not needed for this PR but do you think that could be useful?