I posted a little tech report about how to use the generalized winding number for constructive-solid geometry (CSG) style boolean operations (union, intersection, difference etc.) on nasty meshes.
Code implementing this has existed for a little while now in the mesh_boolean_winding_number
function of gptoolbox.