add `unionWith`
add more tests
Add semigroup instance
Add Monoid instance for Map k v
Merge pull request #25 from hdgarrood/semigroup-map

Add semigroup and monoid instances
Merge pull request #24 from hdgarrood/unionWith

add `unionWith`