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
rename Valence()  and make indexers' set internal

* rename vertex list's Valence -> GetValence
* make setter internal for list indexers (was private)
Merge pull request #5 from pearswj/mesh-ops

Mesh ops