Use CharIndex instead of GlyphIndex for LineIndices

All of the text run methods use character indices and the split_to_width function also uses character indices. Therefore it will be easier to use character indices to keep track of line breaks than glyph indices.
Reorganise comments
Remove extra split_to_width call

This does not seem to do anything, and according to @pcwalton it might be unnecessary. Float layout is rather broken anyway, and needs to be reworked.
Refactor font metric calculation

This splits out the advance calculation and makes it more declarative
Avoid unnecessary calculations of the entire run metrics
auto merge of #2456 : bjz/servo/metrics, r=pcwalton

cc. @pcwalton