- Make the carrier argument of the constructors for the canonical structures
cofeT and cmraT explicit. This way we make sure the carrier is properly
exposed, instead of some alias of the carrier.
- Make derived constructions (such as discreteC and discreteR) notations
instead of definitions. This is yet again to make sure that the carrier is
properly exposed.
- Turn DRA into a canonical structure (it used to be a type class).
This fixes some issues, notably it fixes some broken rewrites in algebra/sts
and it makes canonical structures work properly with dec_agree.