add valence method
Add new halfedge circulators and organise methods in collections

* traverse from a specific halfedge, either:
    * around its start vertex, or
    * around its adjacent face
* organise methods into: traversals, adj queries, euler and helpers
* mark old circulators as obsolete, need to go through and call new ones instead
Fix bug in edge collapse

* fix a bug where merged vertex is not given the correct
outgoing halfedge to preserve its status as a boundary vertex
* fix test too