Add support for hidden steps

This will finish off TRAC-2818.

Note that this conflicts with #1408.  I'll rebase, depending on which lands first.