[relate][get_turns] move single_geometry to bg::detail, fix get_turn_info test

also create a preliminary version of relate::areal_areal (copied from linear_areal)
in get_turn_info test mutable begin() and end() because it seems that Range can't handle immutable Ranges
[relate] add support for non-simple non-equal Polygons in A/A.

Currently simple interrupt policy is used.
This approach works is there are IPs, Polygons are simple and not equal.
[relate] add support for no-IP casesin A/A, fix for_each_disjoint_geometry_if for Multi Geometries.

Fix a bug in for_each_disjoint_geometry_if resulting in assert failure if no turns are generated. This affects L/L, L/A and A/A.
Enable all combinations of Areal geometries.
Add ignoring of empty disjoint geometries in L/A and A/A.
Add tests for disjoint geometries.
[relate] add result interrupt check to no_turns_xxx predicates
[relate] fix GCC compile errors - hiding of template parameters and unknown identifier in not used part of the code
Merge branch 'develop' into feature/relate
[relate] Fix for_each_disjoint_geometry_if return value for Multi Geometries

Fix GCC warnings.
[relate] support simple, equal geometries in currently used, simplified interrupt_policy
Merge branch 'feature/relate' of github.com:boostorg/geometry into feature/relate
[relate] fix special case of L/L and L/A - going out and in on the same point but with different segment.

Linestring going into the exterior of the second geometry and then going inside on the same point. In this case the exterior wasn't taken into account. Now in addition to the Point, seg_id is checked. The check should also be faster since integral segment ids are checked before Points.
exit_watcher methods now take Turn instead of Point, seg_id and other_id.
Also added some tests for non-simple A/A.
[relate] rearrange updates of result in interrupt policy for A/A to show the handling pattern
[relate] Add HandleOtherTag to turns::less_seg_dist_op<>, change TurnAnalyser concept.

HandleOtherTag can be used to define how should the seg_id of the other geometry be used in comparison.
TurnAnalyser now must have two versions of apply(). One is called for it != last and the other one for it == last.
[intersection] guard print-outs within a #ifdef/#endif block
Merge branch 'feature/relate' of https://github.com/boostorg/geometry into feature/setops
[get_turns] fix for MultiLinestrings containing Ls with equal points

In this case no sections were generated for those "empty" Linestrings but if there were some sections already generated they could be marked as last_non_duplicated.
Merge branch 'develop' of https://github.com/boostorg/geometry into feature/setops
[set ops] allow equality for multilinestrings with duplicate linestrings
[set ops] change macro used for debugging
[set ops] modify way of calling multilinestring_equals (due to changes in multilinestring_equals)
[set ops] add more examples with duplicate points and zero length linestrings