BUG: Fix input bytes conversion in Py3 to return str
Fixes #3963, #4785

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. In Python 3.2, has to read the entire file in first (because `gzip` and `bz2` files both lack a `read1()` method in 3.2)

Also adds support for passing fileobjects with compression == 'bz2'.

bz2 in python 3.2 doesn't support a `read1` method, for what look to be historical reasons. It does support `read1` in Python 3.3. Because it's a C module, you can't monkey-patch it directly.
 @y-p I'm getting closer on this, but decided to give up and just read the entire file in with 3.2, then decode and rewrap with StringIO -- otherwise we couldn't support compressed files (easily) in that version...
 Yep, seems like a reasonable minimal workaround to me.
 @y-p look okay to you? going to merge if so...
 Yep, go ahead.
