Storage options
- [x] closes #xxxx
- [x] tests added / passed
- [x] passes `black pandas`
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [x] whatsnew entry

Refs: #28377 , #30359 , #33639 , #16692 (and probably more) This PR is near complete.
There may be more places where storage_options can be added, but the most important cases are covered and tested.

Question: the docstring for the kwarg should be added, but it would be repeated verbatim in every place; is this the right thing to do?

(cc @TomAugspurger ) > Question: the docstring for the kwarg should be added, but it would be repeated verbatim in every place; is this the right thing to do?

Yeah I think it needs to be duplicated. We do share some sharing between some readers, but not all. It'll be easier to just add the same lines to each, and add an example in one place (perhaps read_csv). (fails against numpy dev with "ValueError: invalid __array_struct__" while reading stata) Failing test is https://github.com/pandas-dev/pandas/issues/35426 (i.e., unrelated) Added text to io.rst I disagree with "file-like objects must be iterable" in `is_file_like` - most uses (in pandas) require only `read`, and certainly for stata.

 IIRC we've gone back and forth on exactly what is required. I don't especially care what is required, but I'd prefer to be consistent in what we accept across readers unless there's a good reason not to be. Hopefully @gfyoung can comment here. isort is complaining, but passes for me locally. Can someone tell me what's wrong?
```text
Check import format using isort
##[error]ERROR: /home/runner/work/pandas/pandas/pandas/conftest.py Imports are incorrectly sorted and/or formatted.
Check import format using isort DONE
##[error]Process completed with exit code 1.
```
code:
```python
@pytest.fixture()
def fsspectest():
    pytest.importorskip("fsspec")
    from fsspec.implementations.memory import MemoryFileSystem
    from fsspec import register_implementation
    from fsspec.registry import _registry as registry
``` Perhaps check that the version of isort matches?

Also some warnings in io.rst: https://github.com/pandas-dev/pandas/pull/35381/checks?check_run_id=954318397#step:6:2333. @TomAugspurger you were right, newer isort solved it; also fixed the RST link. ping My only outstanding question is https://github.com/pandas-dev/pandas/pull/35381#discussion_r465250632. @gfyoung has not yet responded, and I would rather not require iterable files, nor change the utils code that other things might be depending on. I suppose I'm stuck for now! This particular case is *only* for stata, and the previous code didn't use `is_file_like` either.

(note that IOBase does guarantee iterability, but I'm not certain that all file-like implementations do - not that I can imagine why they wouldn't) > ##[error]doc/source/user_guide/io.rst:1706:83:E501:line too long (86 > 79 characters)

lint issue > lint issue

@jreback : fixed I think. Even linting the docs... Thanks!