Slim dependencies
This PR implements the main ideas from #2391, removing crc32c and fsspec as core dependencies and adding them to the sharding and remote groups respectively. Imports are adjusted in minor ways and we now take advantage of pytest.importorskip in a few new places.
TODO: if we decide to go this route, we should have a separate part of the test matrix that includes optional dependencies.
Closes #2391 Fixes https://github.com/zarr-developers/zarr-python/issues/735
TODO:
- [ ] Add unit tests and/or doctests in docstrings
- [ ] Add docstrings and API docs for any new/modified user-facing classes and functions
- [ ] New/modified features documented in docs/tutorial.rst
- [ ] Changes documented in docs/release.rst
- [ ] GitHub Actions have all passed
- [ ] Test coverage is 100% (Codecov passes)
Something I learned over the weekend is that crc32c is LGPL Licensed. Regardless of whether we get crc32c into numcodecs, we may want to pick a different implementation (googleapis/python-crc32c is Apache 2.0 licenced).