Mesh::setElementsConnectedToElements optimize memory.
Mesh::setElementsConnectedToElements make neighbours unique.
Make Element::identifyFace() public for all element types.
Make Element::addNeighbor() return face_id of opposite neighbor.
Add Element::setNeighbor().

This is used when the face_id of the neigbor is known.
Use Element::setNeighbor() in setElementsConnectedToElements().
Rewrite element loop using iterator.
Early exit if element is an edge. Reduces indentation.
Use iterator in neighbors for loop.
Use boost::optional in Element::addNeighbor return value.
In Element::addNeighbor() remove extra nullptr test.

Check only if there is a neighbor.
Rewrite setElementsConnectedToNodes() for loop using iterators.
Move Element::setNeighbor() into private section.
Merge pull request #185 from endJunction/OptimizeElementNeighborComputation

Optimize element neighbor computation