Fix finally, it is hoped, the potential infinite loop in routespl. When recovering unused space from
the boxes, we try to find the smallest and largest x values of the spline in the box and reduce the
box to that size. This is done by subdividing the spline into small pieces and using the end points.
If the box is small in height, it is possible none of the points will lie in the box. To handle this,
if any box is still unbounded, the spline is divided into smaller pieces and we try again. Alas, some
times the path planner just fails, with the spline not passing through some boxes. In this case, the loop
will never stop. So we now do some reasonable number of passes (initially, 15). If this isn't enough,
we use the shortest path polyline to bound the boxes. This will allow the layout to finish. The bad
spline will be emitted, but this should be obvious and, in any case, will help with debugging.