Implement a minimal `Option` that has `map` and `flatMap`. ```scala import scala.{Option => _} Option[Animal] :> Option[Dog] sealed trait Option[+T] case class Some[T](a: T) extends Option[T] case object None extends Option[Nothing] val a: Option[String] = Some("hello") val b: Option[Int] = Some(12321) ```