Replaced all convenience vector lists ( UP_VEC = [0,0,1], etc)   with tuples:  (UP_VEC = (0,0,1)  ) so  they're immutable and can be used as hash keys
Added BoundingBox class. Changed split_body_planar to me more robust and use BoundingBox.
Changed tests to use new split_body_planar()
Added add_wall_thickness arg to BoundingBox.split_planar() so new bounding boxes can add area around them for mold-making purposes.  Default behavior is no-op
Added note on argument requirements & list size assertion in fillet_2d()