Let step definitions return promises.

fixes #173
fixes #27
Add a check for result.then to be a function