Semiring extends AdditiveMonoid.

This switches Semiring to extends AdditiveMonoid rather than
AdditiveSemigroup. This means that Semiring still subsumes Rig and Rng,
however adding in a zero makes it much more useful. The downside is a
loss of generality, but I can't think of any Semiring without a zero.
And if we didn't have a zero, we could always add one by lifing the type
into an Option.
Remove type class instances from PolySparse/Dense.