Replace all uses of Iconv with String#encode (GH-1079)

String#encode is part of the Ruby standard library as of Ruby 1.9 and has replaced the Iconv library. This change breaks support for Ruby 1.8.

There were some inconsistencies in the code paths related to transcoding depending on if an `encoding` was specified or not. It was confusing to figure out what the types of objects were. My strategy here was to implement an interface for transcoding that takes as input all the different types currently in use (that I ran into) and always returns a `String`.

Testing done:

- `rake test`
- ran a local server and uploaded a CSV file for annotations in both Unicode and ISO 8859-1 encodings.