make sure matching classes have matching HashCodes

Two classes with the same values in the same fields should return the
same value for GetHashCode()
fix indentation
make classes implement GetHashCode()

xor the hashcodes of all fields in the class