Fix issue with recursive call of Curve.getIntersections().
Improve Curve#getIntersections() by avoiding further subdivision of flat curves.
Updated boolean operation methods.

The algorithm is based on paperjs' native segment and curve objects
rather than the generic Node and Link objects.
Also this is much smaller and faster! :)
Merge upstream