Add variational optimisation framework to NekMesh
This adds the variational mesh optimisation framework to NekMesh. Its now throughly tested for triangle, quad, tet and prism meshes along with triangle/quad and prism/tet hybrid meshes. Although not perfect we've got a pretty good grasp of how it behaves and why. Future work will be to move this code into a library as a "variational solver" where NekMesh utilises this along with alternative solvers.