An assorting of rewriting, guided by the test suite but with an unfortunately necessary broadness of scope

many of the tests depend on multiple types, and many type implementations depend
on other types in a circular fashion, so a type-by-type approach does not really
work.  still, things are going fairly well.
3 files changed