Big refactoring: replace (hopefully all) arbitrary direct usage of glm vectors, raw values and std::tuples wherever sensible
While internally still using glm data structures, they are no longer being used directly, but rather as wrappers for other types to increase type safety.