type class Optional[F[_]]

- abstracts over containers/contexts which may provide a value or not

- instances:
  - scala.Option
  - scalaz.LazyOption

- provides syntax.OptionalOps

- tests for all the functionality
merge branch scalaz-seven
integrate Optional into GenTypeClass
provide concrete orElse in Optional
provides nonEmpty as an alias for isDefined for Optional
provides Optional instance for scalaz.\/
provides Optional instance for LazyEither
provides Optional instance for Validation
Port of Data.Map to scalaz

This is a port of Haskell's Data.Map into scalaz. There are a few things
that need to be considered regarding the usage of sys.error (as per the
implementation in Haskell. It would be advantageous to have all functions
total.

Additionally there are some functions that might still be required, but
the majority of the useful functions have been provided. Feedback is
greatly appreciated.

Signed-off-by: Gary Pamparà <gpampara@gmail.com>
Don't mix context bounds and implicit params for 2.9.x

Signed-off-by: Gary Pamparà <gpampara@gmail.com>
Contravariant composition, such as with Functor.
Foldable products deriving 1-ness from only one side.
Typo in ProductFoldable1L.
Traverse products deriving 1-ness from only one side.
Correct a typo resulting in switched partitioning.

Thanks to @xuwei-k for pointing this out. Added additional tests to check this
more thoroughly.

Signed-off-by: Gary Pamparà <gpampara@gmail.com>
Typo.
Missed A=>B steps.
Use foldMap1Opt instead.
Also use *opt variants for directional folds.
flip.flip return self