Refactor geo lib surface

This pull request already contains my previous Mesh2GeoConversion pull request.

**Changes:** The vector of triangles in the Surface class stores a pointer to points redundantly. Using specialized `getTrianglesPointId()` and `getTrianglesPoint()` methods clarifies code's intent in all places of occurence.

**Unadressed issues:** The `Triangle operator[](std::size_t)` is nowhere used. I'd remove it and other unused Surface' interface methods in another pull request.
In the code there is often a double loop over all surface' triangles and the three triangle's nodes. I would create a specialized interface accepting a functor in the Surface class.