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)
```