MAINT: rename IOError -> OSError
Since Python 3.3,  IO and OS exceptions were re-worked as per [PEP 3151](https://www.python.org/dev/peps/pep-3151/). The new main base class is [OSError](https://docs.python.org/3/library/exceptions.html#OSError), with several other exceptions merged, including IOError (i.e. `assert IOError is OSError`).

This PR changes many of the old alias to OSError, with a few exceptions:

- Versioneer EnvironmentError were not modified (this change has been merged upstream)
- In `pandas/_libs/parsers.pyx`, this is not an OSError, as there is no issue reading the file. The exception is reclassified as a [TypeError](https://docs.python.org/3/library/exceptions.html#TypeError).

Are any of these changes worthy of a whatsnew entry?

@mwtoews can you add a whatsnew note in 1.4., I/O Bug fix section is fine, just noting that we changed this. (and ref this issue). pls merge master and ping on green. @jreback added a whatsnew entry to describe the user-visible change, let me know if it suites or needs rephrasing. I don't understand the Azure "The operation was canceled" CI failure. <s>The scope of this PR has been reduce to a pure maintenance change, which shouldn't need any whatsnew entry, since any IOError class thrown was viewed as OSError to the user, so no changes should be visible.

The more involved bug fix that changes the exception class, and works across different parsers is at #43443</s> @mwtoews - can you take a look at the test failures? The third commit in this PR fixes the excel readers, which allow bytes for the first parameter (e.g. [pandas.read_excel](https://pandas.pydata.org/docs/reference/api/pandas.read_excel.html)). Since `get_handle` expects FilePathOrBuffer, these bytes need to be passed as BytesIO buffers.

I'd appreciate a review from anyone familiar with `pandas/io/excel/_base.py`. As these are internal changes to the excel readers, I'm not expecting any further whatsnew notes on this aspect, but please correct me if it should. It seems that support for reading bytes for the excel readers was added with #30519

Also, feel free to re-title and re-classify this PR, as the scope has shifted since initially submitted. > It seems that support for reading bytes for the excel readers was added with #30519
> 
> Also, feel free to re-title and re-classify this PR, as the scope has shifted since initially submitted.

no its fine, just the question on where the bytes are wrapped is still likely hit pre commit issue: https://github.com/pandas-dev/pandas/pull/43366/checks?check_run_id=3555699486 @github-actions pre-commit thanks @mwtoews 