[relate][overlaps][crosses] Add unified way to implement the default dispatch of spatial relation

Add relate_base derived from not_implemented<> if necessary for the purpose of support_status check.
This class is derived from not_implemented<> if either StaticMaskTrait or detail_dispatch::relate::relate is derived from nyi::not_implemented_tag.
Use this technique in crosses() and overlaps().
[within][covered_by] Add the support for Areal geometries for within() and all OGC geometries for covered_by().

Also the specializations for Multi Geometries was moved from geometry/multi/algorithms to geometry/algorithms. They're now in one place.
The default strategies are point_in_point for PointLike, winding<> for PointLike/AnyGeometry, relate for L/L, L/A and A/A.
Point/MultiGeometry version now uses point_in_geometry directly which implements the correct behavior - this fixes the wrong handling of MultiLinestrings (boundary point of a Linestring may not be a boundary point of a MultiLinestring which contains it).
[within][covered_by] enable default relate strategy for cases other than P/P and P/* as far as CS is the same
Merge branch 'feature/relate' into develop