.to_parquet() to a StringIO() causes python to crash
```python
import pandas as pd
from io import StringIO
df = pd.DataFrame({'x': [1, 2, 2, 4]})
df.to_parquet('some_file')  # works fine

s = StringIO()
df.to_parquet(s)  # this causes the crash with following error
```

Error:
```
libc++abi.dylib: terminating with uncaught exception of type parquet::ParquetException: Arrow error: IOError: string argument expected, got 'bytes'
[1]    42832 abort      python
```


Edit:
The cause for the error is that instead of a String buffer, we should use Bytes buffer (io.BytesIO). But anyhow, the exception should be handled and shouldn't cause the interpreter itself to die.