Backport the less controversial helpers from the OptionT branch.

This splits out the things that I suspect we want regardless of the fate of #53, and if merged first, could make the diff on #53 a bit more illuminating.
Ah, I see now. Some things are not so simple from the diff view.