Add 2D boolean facets

This adds a 2D boolean facet interface and and array-backed implementation in analogy to the 3D versions.