Fix #887: Use ly:string-percent-encode for textedit URIs.
* Add an overloaded instance of String_convert::bin2hex optimized for
converting single bytes to hex.
* Add a new callback, ly:string-percent-encode, to be used for percent
escaping paths in textedit URIs. This does the following:
- Leave unreserved characters in textedit URIs unescaped. This
includes 0-9, A-Z, a-z, and three punctuation characters (hyphen,
underscore, and full-stop).
- Leave the forward slash (/) unescaped, since it is used as a path
delimiter.
- Escape all other characters. Don't check for a null byte, since
those likely won't sneak into a full pathname.