iconv: Ignore unrepresentable characters when transliterating

Certain characters where causing iconv() to fail, which resulted in
buggy rendering. By adding "//IGNORE" to the already existing
"//TRANSLIT" flag unrepresentable characters are automatically removed
from the resulting output.

    > echo "Nguyễn Thái Ngọc Duy" | iconv -f UTF-8 -t ASCII//TRANSLIT
    Nguy
    iconv: (stdin):1:4: cannot convert
    > echo "Nguyễn Thái Ngọc Duy" | iconv -f UTF-8 -t ASCII//TRANSLIT//IGNORE
    Nguyn Th'ai Ngc Duy
iconv: Move draw_chars encoding code to IO module
iconv: Convert characters before trimming text before rendering

By first trimming and then transliterating, characters which need two
characters to represent would cause the rendered text to get out of
alignment. An example can be seen by running:

	$ LANG=C ./tig 2324d6120c5de58f63b32b876bd33e99d7375dbb

Fix the misalignment by reversing the operations so that text is trimmed
after it has been transliterated.

Fixes #86
iconv: Remove unnecessary length argument to encoding_iconv
iconv: Consolidate convert methods into one single backend