Replace all uncertainty conversion with represent_as()
As of astropy 5.1, NDUncertainty objects now have a built-in represent_as method to convert between types. This PR replaces the multiple ways we were doing conversion between uncertainty types with consistent use of this method, as well as converting between types in a few places where the uncertainty was assumed to be standard deviation, but not enforced. This definitely needs another set of eyes to check that my types are correct in those places where I added conversion.
Closes #983
I'm also updating the CI tests here, since the version of astropy we now require dropped support for python 3.7.
Test failure is an unrelated remote data download error.