Rewrite pretty-printer to do tree-at-a-time printing.

This version can also do the Tuple/Unit distinction, which I've put in.
We may want a different keyword to avoid giving the impression that
Units are actual atoms in the language.