Adding Monoid laws
- Adding monoid instances Sum & Product to help with testing of monoid and semigroup.
- Changing semigroup to work with Sum & Product.