Rename AbstractValueObject to AbstractScalarValueObject and add ValueObjectInterface.