Create ValueObject to encapsulate comparison between value objects

This should DRY up value objects in the domain such that we don’t
have to hand code equality methods in them. Other checks can
be added later such as checking if ‘other’ is actually the same class.
Merge pull request #54 from relaxdiego/value_object

Create ValueObject to encapsulate comparison between value objects