update interval2D generation

    make upper and lower line completely disjoint
rewrite completely the interval2D generation

    generate the rectangles first, than extract lower and upper line
    keep the old generation, because this one makes less thresholds
add allow_degenerate checkbox that affect the generation
fix bug in interval2D generation

    when kissing not allowed and
         new bottom left had same height than old bottom left,
         the new rectangle could be horizontal
change search for a point on rectangles of Interval2D

    returns the index of the rectangle that contains the point or -1
    _contains_binary_search() just calls find_square()
refactor Segment3D in Segment
add orientation() predicate
add intersection predicate between two segments

    only with orientation() calls, tells yes or no,
    don't compute the actual intersection point
add visible() predicate for Interval2Ds
remove random test comments