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.
it's essentially a dupe of the tests from test_frame, except it works on series which has slightly different semantics. I think it would also be fine to just test this for DataFrame and do a minimal test for Series, but I wanted to err on the side of more tests. I'll slim down the tests here.