Add semigroup instance

As mentioned in #23