Abstract over strings and raw bytes in csv::Writer.

This is done by defining a trait, `BorrowBytes`, that knows
how to extract raw bytes from various types (like Strings and
Vec<u8>). This also supports copy-on-writer pointers (`Cow`s).

This gets rid of the need for both a `write` and `write_bytes`
method. They have been merged into a single `write` method,
which makes this a breaking change. I believe code that uses
`write_bytes` can be changed to use `write` in all
circumstances.

[breaking-change]
0.10.0