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.
i'm bit unhappy with this implementation because it increases dependency of this class on PropertyVector. Have you thought about using 'boost::shared_ptr' (see http://alsharabi.blogspot.com/2008/11/boostany-2-storing-pointers-in-boostany.html)? Using it, i think it is possible to automatically delete PropertyVector objects when Properties object is deleted. and we can keep use of 'boost::shared_ptr' only in this class and hide it from public.