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.
Typo.
Missed A=>B steps.
Use foldMap1Opt instead.
Also use *opt variants for directional folds.
Added a test for retriable tasks, and accumulating errors.
Missed type params; apply2 not apply.
Silly overrides.
alias functions should be final
ListT#headOption should be OptionT

This is a breaking change to the API, but it makes it more consistent with similar methods on other monad transformers, such as EitherT#toOption or OptionT#toLeft.

Also, it will break old code in a very obvious way with a compile error that can be fixed by adding a `.run`.
Change EitherT from a sealed trait to a final case class
ListT should be final instead of sealed

Extending a case class is generally troublesome, and we aren't trying to anyway.
Change UnwriterT from sealed trait to final case class
Change WriterT from sealed trait to final case class
Change Coproduct from sealed trait to final case class
use implicit val instead of implicit def
Merge pull request #444 from ceedubs/traits-to-case-classes

Case-classify traits