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

See discussion in pull request #164 .