Derive some Semigroup/Monoid instances via Generics
This increases compile-time (until GHC becomes more clever) but the generated code is expected to be at least as good (if not better) than the manually generated code. This addresses #3169
This increases compile-time (until GHC becomes more clever) but the generated code is expected to be at least as good (if not better) than the manually generated code. This addresses #3169