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?
