Huge refactoring. Parser now uses byte strings.

Using byte strings is unfortunate, but it allows the parsing to
be extremely permissive with respect to the encoding of CSV data.
In practice, this is important.

The high level decoding routines still assume UTF-8 support. I don't
have any plans to change this at the moment.

Also, I've refactored the API quite bit. If you were using rust-csv
before, this commit will almost certainly break your code. There are
too many changes to list. It would be best to just consult the API
documentation: http://burntsushi.net/rustdoc/csv/index.html

[breaking-change]