Modularize the `show` infrastructure, and add tests

This makes it easier to extend `show` to other types
(for example, the new color types defined in Images)