Altered Value class to be abstract with specific subclasses for discrete
and real valued instances. This should save memory allocation so that a
discrete and real value does not have to be stored for every value
regardless of type and also open the door to creating new attribute
types.