Add checkpoint functionality to save and restore grid and mesh
Introduces new module to keep the state of mesh and grid during different time points in the pipeline.
The mesh and grid can be restored when needed from the same checkpoint multiple times.
The changes also required adaptation from the mesh data structure to return its own state in portable format instead of relying purely on pointers. This format will be helpful later to combine with physical simulation.