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
Merge pull request #444 from ceedubs/traits-to-case-classes

Case-classify traits
Merge pull request #445 from ceedubs/listt-headoption

ListT#headOption should be OptionT
Merge pull request #447 from xuwei-k/implicit-val

use implicit val instead of implicit def
value class
value class