Setoid, Semigroup, Monoid, Applicative

I pulled setoid from eq-future and I'm not entirely in love with semigroup's implementation, but I find these interfaces very useful.