Reduce repetition in templating
Drastically reduces template parameter repetition by templating on relevant types (e.g. fields) instead of propagating their parameters (e.g. meshes, centering, etc.). This makes it easier to modify these underlying types without then having to propagate those changes through the entire codebase (such as additional template parameters needed for mixed execution spaces).
Also updates the
CMakeLists to check for Kokkos 4 and CUDA when building.