call callback only once per step execution

Right now it is possible to call callback fn multiple times in a step definition - this results with abnormal behavior - following/next steps are triggered for every callback invocation - this is simple check to prevent this + print to output that callback was called multiple times for some step.

I think that it improvement is useful during test development because async code based on events may trigger callback fn multiple times - it is not always obvious what is happening.