[disjoint] Fixed bugs with multipolygons and touching points.

Multipolygons: Tests were failing when the second part of a
multipolygon intersected, as `point_on_border` returns only a
single point. The check now tests all parts of a multipolygon.

Touching points: Previously, it was checking if a point on one
geometry was within the other, but this was not sufficient if the
outer rings touched. The within check would fail, as the point
may be on the boundary rather than strictly within. The code now
uses `covered_by` and passes the tests.