The comparison functor passed to the constraints hierarchy has a
pointer to the `Constrained_triangulation_plus_2` that contains it.
That means the defaulted move constructor and move assignment operator of `Polyline_constraint_hierarchy_2` cannot be used to
implement the move constructor and move assignment operator of
`Constrained_triangulation_plus_2`.
Add a special constructor for `Polyline_constraint_hierarchy_2`, that is
usee to move the hierarchy and reassign the comparison operator.
That will suppress the warnings about `CMP0167` (from CMake 3.30):
```
CMake Warning (dev) at cmake/modules/display-third-party-libs-versions.cmake:37 (find_package):
Policy CMP0167 is not set: The FindBoost module is removed. Run "cmake
--help-policy CMP0167" for policy details. Use the cmake_policy command to
set the policy and suppress this warning.
```
It is invalid to try to detect if an iterator is singular or value-initialized.
The only operations allowed with value-initialized iterators are:
- copy the iterator, or
- destroy or assign the iterator.
Comparisons like `vertex_it == Vertex_it{}` are not allowed.
VC++ 19.16 thought there was an ambiguous call to `operator==`
between `skip_iterator` and `skip_iterator` in the internals of `boost::iterator_adaptor` (yet another matching bug) of VC++ 19.16).
I solved it by using the more modern `boost::stl_interfaces::iterator_interface` from Boost.STLintface (Boost>=1.74).
- encapsulate the creation/erasure of constraints in the hierarchy class
- add encapsulation in the hierarchy class, to detect direct uses of members
- add a test of `CDt_plus_2::insert_vertex_in_constraint`, and fix it
- rename `concatenate` and `concatenate2` to
- `concatenate`
- `prepend`
and force a rvalue reference on the argument corresponding to the constraint
that will be swallowed
- rename `split` to `split_tail` and `split2` to `split_head`
- rename `fix_contexts` to give it a longer self-explaning name