Implement HalfEdge copying

This is a really neat copying technique that works on many complex
linked data structures: you essentially make the structure you're
copying reproduce asexually, like a bacterium.

The mother object tells the daughter object what structure she should
have, then lets her go.