Fix Period objects hashing to match ==
== is supported between FixedPeriod and OtherPeriod objects, but equal periods
were hashed to different values when their types were different.
Overflows can happen when converting to a more precise period, and generate
a hash collision, but only for really long periods. Collisions will only
happen between periods which are congruent modulo a very large value
(300,000 years or more), meaning this should not be a problem in practice.