Overwrite dist<Square>(Square, Square)

Seems natural: if we define `dist(T, T)` for any type `T`, then we expect it
to coincide with `square_distance()` for `T = Square`.

No functional change.