Split up iteration and push error handling into a method
Extract hunk iteration into own method
Rename differ to diff_presenter
Add specs for string encodings on various ruby versions.

Tests are not run if string does not respond to encoding.
Add a spec back in for the utf-16le case£
Extract diffing into own object
Handle different VM encoding cases.

Unconvertible characters are replaced with literal '?' characters.
Note that in unicode and other character encodings there are multiple
'?' characters, but the one I'm talking about is the one that you'd get
if you took ascii and transcoded it to whichever character encoding
you're working in.