Split the Ranged interval case class into Bounded, Point and Empty.

Hi all,

following #263, I'm starting the refactoring of the Ranged <: Interval class, using the hierarchy below. The idea is to convert all Ranged() instantiations and extractors to be more fine-grained.

As Interval[A] requires only A: Order, we do not have an arbitrary value at disposal, this is why Empty carries a "someA" value.

Cheers,

Denis
I want to have the type checker help me find missing cases during refactoring, so for now I avoid case _ .