This MR adds support of convex meshes to MESA-PD, if OpenMesh is available.
To do so, a ConvexPolyhedron shape is added, which can be initialized using a TriangleMesh. Implementation is partially adopted from the pe implementation of the ConvexPolyhedron body.
Supports VTK output (with per-node and per-face attributes) and collision detection using GJK-EPA.
If OpenMesh is unavailable, the implementation is swapped out with a dummy class guarded by an #ifdef.
ParticleStorage.py was extended to support explicit include paths and dependencies. While in the end not being required in this MR those features were left in for now.