Feature mesh

Dear all,
Here is the implementation of the stand-alone mesh.
Files:
 - abstractmesh.py: abstract interface for the class
 - mesh.py: current implementation of the mesh and the different types of elements.
 - test_mesh.py: the set of unitary tests for the class.

Please be wellcome to review the code and point out any suggestion or improvement.
Br. 

I would rework this function as follows:

if face_ids is None:
    for face in self.faces
        yield Face.from_face(face)
else:
    generator = (face for face in self.faces if face.id in face_ids)
    for face in generator:
         yield Face.from_fame(face)
```
The above code: 
- Does not create temporary lists 
- In general a copy.deepcopy does a lot of unnecessary work, while a copy constructor (see comment about points) can be tailored to do only what is necessary which is probably a better pattern.