Added support for aspects around Step execution (fixes #163)

Naive support for allowing the user to interject custom code before/after each step using an AOP approach. Added a "StepExecutor" class which user can derive from to customize step execution..