Refactor: Separated Face from Polygon

All components and map geometry model abstractions for the half-edge
data structure are now implemented.

Todo: Generalize the components and clean up.
Todo: Rename Polygon as Mesh
Todo: BspLeaf should not own multiple polygons/meshes. GameMap should
own the meshes and BspLeaf should reference one or more Faces.