Proper hashing and equals check

Since jenkins base objects represent rest data, we can reliably hash it to get a hash that represents the jenkins object.  Once we do this we can create a better compare method because we are literally comparing the data these objects represent.