Point2 implements the gospec.Equality interface, so it can be
compared for equality in GoSpec specs.
If the type can be used as a value, like in this case, then extra
care is needed when writing the Equals method because the other
object can be a value or a pointer to a value.
Point3 also implements the gospec.Equality interface, but unlike
with Point2, here we assume that Point3 will not be used as a value.
That makes the Equals method somewhat simpler.