An operation can now return an operation to run in its place.

This commit adds a new StepResult AddThen(op) which an operation
can return to indicate that a new operation should be executed and
its result returned as the return of this operation.