Last bits of async steps

I think this wraps up support for async steps.  All `ShellCommand` subclasses are old-style, and all `ShellMixin` subclasses are new-style, so that makes things nice and easy.

I'm sure there are remaining details.  In fact, I'm sure there are major bits still to do, but I've forgotten them in the five weeks I haven't been working on this.