[algorithms][is_valid] fix bug in collecting ring iterators not
associated with turns; rename overlaps_ring to overlaps_box;
rewrite expand_box and overlaps_box in a more generic way (the
arguments are considered now as generic iterators, not necessarily
iterators or rings);
[algorithms][is_valid] make the visitor for partition more generic
(semantically) so that it fits the semantics of the visitor needed
for partition in the multipolygon case
[algorithms][is_valid] use bg::partition to test whether polygons
(not associated with any turns) do not intersect/overlap each other