Add Applicative, Chain, and Semigroup.

Also derive what we can in each structure.
Merge pull request #6 from joneshf/master

Add Applicative, Chain, and Semigroup.