[algorithms][is_valid] change order of includes
[algorithms][is_valid] avoid calling interior_rings(polygon) twice;
polish code;
[algorithms][is_simple] re-arrange code:
rename detail/is_simple/pointlike.hpp to detail/is_simple/multipoint.hpp;
move code for geometries that are always simple to detail/is_simple/always_simply.hpp;
for areal geometries (rings, polygons, multi-polygons) implement
simpliciality check by checking for duplicate points;
[algorithms][is_simple] print boundary points instead of endpoints
of linear geometries
[algorithms][is_simple] fix bug for closed linestrings (they do not
have boundary points); re-implement is_simple for linear geometries
assuming they are valid;
[algorithms][is_valid] re-implement has_duplicates to return false,
instead of calling BOOST_ASSERT, for geometries with no points;
[algorithms][is_valid] re-implement has_spikes to return false if
the range has one or two distinct points (instead of calling
BOOST_ASSERT)
[test][is_simple] remove tests involving non-valid geometries;
fix test cases with closed linestrings; add more test cases;
add tests for areal geometries with duplicate points;
[algorithms][is_simple] replace inclusion of detail/is_simple/pointlike.hpp
by inclusion of detail/is_simple/multipoint.hpp