Dual supports open meshes

PlanktonMesh.PlanktonDual() now handles open meshes by including
boundaries, and works cleanly with closed meshes. To be added is
additional functionality for removing boundaries if desired. Also,
boundary points are currently calculated as midpoints of the primal
halfedges...making these perpendicular to the new face centers could be
desirable.