fix: remove redundent if
remove useless flat() method
refactor intersect() in does_intersect()

    because it's a predicate...
refactor visible() method to use dicts
fix: use correct coordinates of Point3D in visibile()

    add copy_2D() to Point3D
rename path module to visibility

    because we still have alot of visibility stuff to do in here