2 vs 3 testing for string formatting

Figured you'd take this. 

With all the junk involved in strings vs. bytestrings changing in python3, I think it might be easier to just be very explicit about what methods are used where.

`2to3` won't push an explicit `utf-8` format into `str()`.  I think just doing an explicit version check might be easiest. This looks like it's a real thorny issue for many projects that used `stringIO` in python 2. 

Otherwise, this still fails in `3.4`, but I think it's failing because it's trying to read too many rows. It fails on the 49th iteration of `read_record`, which means it's trying to read one more record than exists in the table. If I can just figure out what the right exception is to raise and where to raise it, I think we're in business for the `_read` methods.