Fixed an bug caused by rounding error and a bug with infinite recursion.

Rounding error was causing the direction of two points to be considered skew when they were vertical from one another. When a start/end point were in
the same parent box (and did not have a clear path from one to another), they would try to swap the start/exit and find the exit a path out of the
blocked box. However, since they both were in the same parent box, this did not simplify the problem and it continued until the call stack was
exceeded.