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
It might be better to do `case _ => true` to subsume the last two cases.