change: all classes extends at least object
add concaveness to edges

    add class Edge3D derived from Segment3D, add type of edge
    _edge_eligible() now returns 0, 1 or 2 depending on the type
    _extend_adjacent_edges() only extend edges with the same type
refactor eligible test and abstract ourselves from edge's types value
use Edge3Ds instead of tuples when treating w/ edges
add: color concave edges in yellow, rest in white

    also remove random comment that were commited by mistake
    in commit f07f6b6
fix: check if 3rd point is in 3rd projection
add: remove flat faces
add dicts to speed up removal of flat faces
change range() to xrange()
move _extract_skeleton() in it's caller

    make stuffs a little bit more readable
change a _get_edges() call to be more consistant
add projections as Interval2D on Interval3Ds
use Interval2Ds for projection

    remove get_projected_segments() which were really crappy
change projection removal: revert if and for
add test to detect non-connected structures

    when not connected :
        print warning
        Interval3D and it's projections are empty
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()