Add custom collection for faces (WIP)

* List wrapper tailer made for faces
* stores faces and encapsulates all face related functionality
* halfedge traversal using enumerator pattern
Tidy up face list
Add custom collection for halfedges

* same idea as face list
* refactor PairHalfedge method (used extensively so many changes necessary)
Fix xml comments
Add custom collection for vertices

* same idea as halfedge/face list
* new Add methods and vertex constructors
* halfedge circulator for 1-ring
* updated tests
tidy up AddFace

* tidy up code and comments
* make use of circulators
Tidy up collections

* modify circulators to handle naked faces or vertices
* refactor methods to add and find halfedge into halfedge list
* lots of tidying up
* add more tests