Add Foldable1 and Traverse1

First pull request. Please review carefully.

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