Add Foldable1 and Traverse1

This provides a better abstraction for when things are "non-empty" and
removes partial functions from Foldable and Traverse.

* Loosens Foldable1 to Semigroup (from Monoid)
* Loosens Traverse1 to Apply (from Applicative)
* Id has a Traverse1
* Product has a Traverse1
* NonEmptyList has a Traverse1
* Tree has a Traverse1

    Traversable <---- Foldable
         |               |
         v               v
    Traversable1 <--- Foldable1

See http://hackage.haskell.org/package/semigroupoids
Add test of foldl1 and foldr1 for NonEmptyList
Add maximum and minimum back to Foldable

Rename Foldable1's to maximum1 and minimum1.
Merge pull request #241 from pufuwozu/scalaz-seven

Add Foldable1 and Traverse1