fix #440. add NonEmptyList#foreach
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