ENH: Allow unicode separators in to_csv & read_csv

* single byte UTF8 separators will always work if utf8 encoding is specified (i.e. seps in range(256))
* single byte delimiters with encodings will always work in Python 3, but will not work in Python 2 if they are multibyte when coerced to UTF8
* multi byte delimiters with encodings will not work on reads with C engine and will not work with writes in Python 2. (but I believe they'll work in Python 3 if they're considered to be length 1).

Closes #6035.

This was slightly complicated validation-wise, but I think it's in a good place
with tests and such. I'll squash together the commits and make sure I've
covered the relevant cases in tests.

I also noticed some weirdness with passing `delimiter` as a keyword argument that
might need to be addressed in the future.


CC @maxgrenderjones, @Midnighter if you want to take a look.
are these dupe tests of the ones in ``tests/io/tests/test_parsers.py`` (e.g. above). I don't really think these are necessary as ``from_csv`` just dispatched to ``read_csv``. If their is anything that is NOT tested above, pls add above, and consolidate these.