Properly handle multi-byte & wide characters

__truncate_filename():
  For any filename, properly truncate it.  Handle wide characters
  specifically.

  Test for wide characters by checking the length determined by
  BASH (number of characters) and by 'wc -L' (apparent length).  If
  the lengths do not match, there are wide characters, and it's handled
  separately, allowing fast operations most of the time.

  Ellipsis are now represented in ASCII with 3 periods instead of a
  unicode ellipsis symbol.

  The returned filename/item length represents truncation as well.