Fix programs for latest Rust and begin usage of new utility macros

I would like some feedback on this.

I don't really like how the macros demand the existence of the NAME constant, but it made it easy.  Also, it is possible I may have broken something (in particular ```tee```) but do not know it because of the lack of tests. :(