Make cluster open close methods return pointer instead of refs easy to work with
Ensure the graphite face cache gets passed down to the graphite_run ctor
Add graphite_run class to use libgraphite2 to do run layout.

First cut code.
Tune justification mapping
Prevent erroneous creation of extra cluster when first glyph is reordered
Handle hard space
Don't map more than one character to the same range of glyphs.

This seems to break PDF export enough it cannot complete for sufficiently complex Burmese words. PDF export is still broken for position though.
Fix glyph advance calculation to prevent negative advances.
Make the char to 0 length glyph range mappings start on a glyph not just mapped

This seems like it should mess up the next cluster maybe it explains the remaining odd positioning
Implement natural widths, range tracking and horizontal and glyph scaling
Implement Vertical glyph scaling correctly for first-line offset.

We we fetching pre-scaled font metrics when we needed unscaled ones.
Implement horizontal skew
Make cluster to a derived class of vector, cut down on forwarding methods.
Make line breaking treat additional letterspace as trailing whitespace
Make cursor tracking treat altered lettersapce as trailing whitespace