More workflow refactoring

* Avoid hard-coding assessment logic for the first step.
* Add an `on_init()` call to assessment APIs that support it (not currently used, but will be for AI)
* Avoid rejecting new workflows with unrecognized steps (support rollbacks)
* Small fixup with a key error in a log message.

@stephensanchez