Add `vtkm/Geometry.h` and test it.
This commit adds several geometric constructs to vtk-m in the `vtkm/Geometry.h` header. They may be used from both the execution and control environments. We also add methods to perform projection and Gram-Schmidt orthonormalization to `vtkm/VectorAnalysis.h`. See `docs/changelog/geometry.md` included in this commit for more information.