Standardize handling of glyph names for U. F. O. output.

This adds a standards-compliant name mangler and a hash table look-up for glyph names (so that we can iterate names that collide after mangling).

The usage of `output` is a bit hard to follow - does the code following it have any effect if `output=-1` (ie `start1` will be an empty string)? If not, can `break` be used and `output` be returned directly?