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.