Add new bisect_failures template function to help identify minimal failing
test cases from complex input data. The utility uses a bisection-like approach
to iteratively simplify data and locate the smallest subset that causes failures.
Features:
- Handles multiple failure types: CGAL exceptions, std::exceptions, exit codes
- Automatic ratio adjustment (starts at 0.5, halves when no fault found)
- Saves intermediate states for debugging (current, bad, error, final_bad)
- Comprehensive test suite with 14 tests covering all combinations:
* Edge cases (empty data, no failures)
* Single element failures (each failure type independently)
* Pair combinations (all 2-element permutations)
* Triple combinations (all 3 failure types together)
* Large datasets (up to 200 elements)
The test suite demonstrates complete combinatorial coverage of three
independent failure conditions and validates the algorithm's ability to
isolate minimal failing cases.
All tests pass in both Debug and Release configurations.