Adjust coproducts so as to improve error messages.

Because :+: is right-associative, you can get ugly error messages if you write
composite coproducts like so:

    type ExpressionSig CParser = TypeSig CParser :+: Expr :+: Operator

The components of the product are printed very confusingly because the Expr
and Operator types are just hanging off the right end of an existing, large coproduct.
Putting the TypeSig CParser at the end of the expression has no semantic difference
but makes the error messages much easier to read.