BUG: Fix input bytes conversion in Py3 to return str

Fixes #3963

Fixed bug with reading compressed files in as `bytes` (`gzip` and `bz2` both now return `bytes` rather
than `str` in Python 3) rather than `str` in Python 3, as well as the lack of conversion of `BytesIO`. Now, `_get_handle` and `_wrap_compressed` both wrap in an `io.TextIOWrapper`, so that the parsers work internally only with `str` in Python 3. That said, `bz2` isn't supported in 3.2, because it doesn't support a `read1()` method. Could also choose to write a compatibility wrapper if necessary.