MeshLib add properties

This PR is based on the discussion in PR #531:
- It adds an implemention to manage properties within the Mesh.
- The properties are associated to specific mesh items like mesh nodes or mesh
  elements via an enum class (see enum class MeshItemType).
- The properties are not restricted to a particular data type, you can use several types like double, vector or matrix
  types at run time together (see tests).
- There is not a possibility to get the value data type.
Maybe this is more ituitive? 
```This method is used if only a small number of distinct values for a property exist (e.g. mapping material groups to elements). Therefore, the number of distinct properties is required as well as a mapping vector that assigns one distinct value to each MeshItemType (node or element) index.```
(imo implementation details such as storing on the heap not useful here)