Added fold(Right/Left)1Opt and fold(r/l)1Opt

In scalaz v6, the `Foldable[A].foldl` and `Foldable[A].foldr` returned `Option[A]` (i.e. `None` if the foldable was empty, `Some` otherwise). In scalaz v7 this had been removed.

I am re-adding the functionality under the names `foldl1Opt`, `foldr1Opt`, `foldLeft1Opt` and `foldRight1Opt` but am not attached to the names if a better name is forthcoming.

Additionally a method `foldMap1Opt` which is like `foldMap` but returns an `Option[B]` and requires only that `B` has a `Semigroup` rather than a `Monoid`

I have added tests for all methods