Refactor astropy.table to use six / Fix unicode issue

When trying to implement #1766, I noticed that `Table.__str__` fails when the table contains Unicode columns containing non-ascii characters.

I could have solved that in isolation, but it actually got fairly involved and involved updates to many disparate parts of the code.  Simply moving to use `six` instead (with the corresponding use of `from __future__ import unicode_literals`) resolves it automatically.

I did not "sixify" the tests, as this actually better tests how most users will run their code in either Python 2 or 3.