Refactor Differ

* Extract lots of locals into methods.
* Rename `Differ` to `DiffPresenter`. The class wasn't really doing diffing, that's what `Diff::LCS` handles. `Differ` really just presents the diffs in a particular way.
* Extract an `EncodedString` class to handle string encodings.
* The `Differ` can now reconcile UTF-8 and UTF-16LE, eliminating the need for a test in `diff_presenter_spec.rb:62`.
* Replace `eql` with `eq` in `diff_presenter_spec.rb:21` since we now decorating strings.

Crafted with love by @r00k and @samphippen at RubyConf '13.