Let step definitions return promises.

fixes #173
fixes #27