Wrapper class that discriminates type Y in context of type X with a
value of type D.
For example, consider a sealed trait and its subclasses. Each subclass
could be assigned an integer by defining a Discriminator[Parent, Subclass, Int]
Discriminator[Parent, Subclass, Int]
context in which type Y is discriminated from other types
type that is differentiated from other types by values of D
value type that discriminates values of Y from other types in context of X