[strategies][agnostic] fix bug in Graham-Andrew strategy:
last is used again after two calls to pop_back() which can invalidate
the reference;
patch: make last a true point rather than a reference
bug reported/patch suggested by David Zhao
[test][is_valid] add more tests cases for polygon and multi-polygons
[algorithms][is_valid] factor-out in a separate file self turns computation
code (used by polygons and multi-polygons)
[algorithms][is_valid] implement predicate class that determines
whether a polygon or multi-polygon turn is acceptable (code partially
moved from algorithms/detail/is_valid/polygon.hpp)
[algorithms][is_valid] re-structure polygon's is_valid algorithm (for
readability and possible usage by is_valid for multi-polygons);
move code to sepatate files (to be used for multi-polygons as well);
move multi-polygon implementation to separate file;
[algorithms][is_valid] move multi-polygon implementation to separate file
[algorithms][is_valid] include is_valid for multi-polygons (coming
from a separate file now)
[algorithm][is_valid] Re-design complement graph implementation:
* complement graph is now templated by turn points rather than vertices
* vertices get the vertex_handle type from the graph now
* simplify DFS algorithm to use only parent vertex id instead of parent
  vertex (only the parent id is really needed)
The last change also solves incomplete type compilation errors on
darwin/linux clang++, when -stdlib=libc++ is set.
[test][is_valid] move validity check functions/classes and related
code to file test_is_valid.hpp; make testing more elaborate: for rings,
convert them to polygons and multi-polygons and test them as such;
for polygons, convert them to multi-polygons and test them as such;
Merge branch 'develop' of https://github.com/boostorg/geometry into feature/is_simple
[test][is_valid] add multi-polygon test cases where one polygon is inside
a hole of another
[algorithms][is_valid] remove USE_INTERRUPT_POLICY macro
Merge branch 'develop' of https://github.com/boostorg/geometry into feature/is_simple
[algorithms][is_valid] fix some wrong usages of std::size_t (should
have been int)
Merge branch 'develop' of https://github.com/boostorg/geometry into feature/is_simple
[doc] add documentation support for is_valid and is_simple
Merge branch 'feature/doc' into feature/is_simple
Merge branch 'develop' of https://github.com/boostorg/geometry into feature/is_simple
[algorithms][is_simple] add missing include
[geometry] add is_simple and is_valid algorithms in geometry.hpp