Add support for Generically deriving Semigroup.

Fixes #26 

If it's decided that picking a bias for sum-types is worse that not supporting them at all I can edit this patch.