REF: move get_filepath_buffer into get_handle
- [x] closes #33987
- [x] tests added / passed
- [x] passes `black pandas`
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`

This PR makes `get_filepath_buffer` a private function and is called inside `get_handle` - one function to rule all of IO ;)

This PR will make it easier for future PRs to make the IO-related interface of `read/to_*` more consistent as most of them should support compression/memory mapping (for reading)/(binary) file handles/storage options.

Notes to keep track of future follow-up PRs:

- context manager for `get_handle`
- `storage_options` for `to_excel`