Interface mismatch between fastparquet and pyarrow for reading and writing Parquet
#### Problem description

The `pandas.read_parquet` and `pandas.to_parquet` methods defer operation to either `pyarrow` (first priority) or `fastparquet`. The issue is that these libraries have a slightly different interface:

For reading:

- `pyarrow` accepts `IOBase` and not `bytes`
- `fastparquet` accepts `bytes` and not `IOBase`

Pandas should support one or both and do the conversion automatically.

For writing:

- `pyarrow` accepts `IOBase`
- `fastparquet` doesn't really support writing to an ephemeral buffer because the stream is closed when using the `open_with` argument (see https://github.com/dask/fastparquet/issues/408)