Boolean fix

Various fixes for the boolean ops code.
 - Cache correct segments at intersections as soon as we divide the original paths.
 - Maintain the correct order of intersections (in terms of paths) in Curve-Line intersections.
 - Correctly perform boolean operations regardless of the input paths' winding direction.