Merged in the changes from @trou.

  This gives us a UTF-8 aware string, "UTFString" which we'll use
 where we need to.

  Specifically glibmm/ustring.h is used instead of <string>

  Note that both versions of the string library allow:

    .data()
    .c_str()

    .size()

  So there should be no actual API changes, just the different
 type being used.

  This updates #102