Unify glyph metrics to use the same Skia API

Use identical glyph metrics based bounds in HarfBuzz callbacks as well
as ShapeResult's glyph bounds calculation, except on Mac, due to Skia
bug https://bugs.chromium.org/p/skia/issues/detail?id=5328

* Using the same glyph bounds callback in HarfBuzz shaping and in
  ShapeResult's glyph bounds calculation enables reusing of the same
  cache in Skia, as opposed to using the cached glyph metrics based
  cache vs. using a second cache for path based metrics before.

Local benchmarking of the blink_perf.layout shows 12.44%
improvements for the character_fallback test and 1.8-5%
improvements on chapter-reflow-once, line-layout and
latin-complex-test. There are also some hits on flexbox-lots of
data and flexbox-row-nowrap. I am not 100% convinced that the
local benchmarks are accurate enough and would like to observe
the results on the bot. Overall, we should see a layout speed
improvement, perhaps even in the page cyclers.

BUG=610313
R=kojii,tzik

Review-Url: https://codereview.chromium.org/1980913002
Cr-Commit-Position: refs/heads/master@{#407755}
8 files changed