Fixes #153.

Manually tested in SDI:
 - Mark all steps as unfinished
 - Dry run
 - Evolve
 22 steps finished OK.
I don't know why, but passing `registry` first just seems wrong.  I think I'd be happier with having `registry` second, and also having the code which calls the steps fall back to the root-only version on `TypeError` (to allow older steps to continue to run).