Slight improvements to model string formatting

This deduplicates a lot of `__repr__` and `__str__` code for Model
and its subclasses, so there is more consistency between different
Model classes in what their `__repr__` and `__str__` output.
Also made some slight improvements to the previous output formats.
I still don't claim this to be perfect, but it's a step in a better
direction.  In particular I think displaying the different parameter
sets as a table is nice.

These changes are a prerequisite to another, potentially more
interesting change.
Merge pull request #2379 from embray/model-repr

Slight improvements to model string formatting