Add a base class with value object equality semantics to make it easier to create value objects