Improve `Show` instance for types
Use single `Term String` expression rather than huge union

* This also, conversely, replaces the single `Scalar` concrete type with a
  union.
Scalars now play nice with inference