Rewrite translation func to search for best match

The translateWord function now explores search paths through the word
and tries to match larger sets of chars by default.  If it can't it will
fall back to smaller sets, and finally fail if no match can be done.
Update changelog