Show diff in error msg when repr is long.

Cleaned up #18 into a single patch.
In python 2 str usage is mixed... Sometimes it's contains a naive string in the same encoding as the source file, sometimes it contains bytes. And then there's the unicode type.

In python 3 str is really just a unicode string type that contain codepoints and bytes really are just bytes. So to treat them as strings in difflib we must either guess the encoding or face `TypeError: string argument without an encoding` as  a2671f07c6055420c02e5c1e61db02e761f6d858 shows.

Now pformat doesn't guess the encoding bytes, but shows the bytevalues that could be interpreted in ASCII as chars, and the rest as two nibbles in hex escaped by `\x` (aka calling repr on a byte)... Calling repr on a byte makes much more sense.

Perhaps a even more sense would be showing just 12 pairs of nibbles separated by spaces on a line, like hexeditors do. And passing *that* to difflib.