REF: in pandas.io.common integerate BytesIOWrapper into IOHandle
references:

- [pyarrow CSV engine basic PR](#38370)
- https://github.com/pandas-dev/pandas/pull/37639#issuecomment-742278895 
- https://github.com/pandas-dev/pandas/pull/37639#issuecomment-742295452 
- https://github.com/pandas-dev/pandas/pull/37639#issuecomment-742650316 

pyarrow requires `BytesIO` not `StringIO` so in #38370 we add a class that returns a binary handle to reader input. This class (`BytesIOWrapper`) should be integrated into `IOHandle` to better align with the patterns we use elsewhere for file handles (#37639 is the PR that standardized things)

I originally intended to do this in #38370 but I got a little stuck and since that PR is sizeable already I think it's better to spin it off into a separate follow-on task