canonical
The canonical representative of this segment — useful for unoriented equivalence.
Follows Dipole.canonical: an already-canonical blade returns this; otherwise the blade is negated, which exchanges the endpoints exactly, so start and end swap. The representative is rebuilt through copy, so a subclass comes back as its own class.