(cherry-pick)
Try adding strictness to fields in Position and Square.
I don't know if this is the correct way to do this.
Test and fail on hash collision on distinct states
Added cheesy instance implementation of hashWithSalt to Square to avoid hash collisions!!
No longer need hash collision detection
Realized I should always do a hash on (State sqs), not just sqs!