Fix bug in non-manifold vertex handling

* When re-linking halfedges to accommodate a new face which is incident to a non-manifold vertex, ensure that all existing halfedges remain accessible to the vertex.
* Add new vertex-halfedge circulator which allows user to specify starting point.
Fix another bug that sometimes caused asymmetric linking of the halfedges incident to a non-manifold vertex.

Include error handling in case bug pops up again.