New boolean operations

This is more or less a complete rewrite of the paperjs boolean op code.
Parts of code that is common with some upcoming features (path offsetting etc.) has been refactored out.

/Hari