[algorithms][detail] add version that takes as argument a predicate object
(possibly with state)
[policies] rename predicate_based_interrupt_policy to
stateless_predicate_based_interrupt_policy; added a new version
of predicate_based_interrupt_policy that takes a predicate object
(possibly with state) at construction;
[algorithms][is_simple] multi-linestring simplicity check:
pass an appropriate predicate based interrupt policy to self turns,
so that when an unacceptable turn is found, self turn stops and returns
[algorithms][is_valid] make the policy passed to self turns for polygons
a stateless policy