[2nd attempt] Compute bounding box and use it during line break

This CL includes following changes

- Change LayoutCache to have bounding next to the layout piece.
The bounding box may not always be necessary and there is separate
cache before this CL. Having separate cache is not perform well for
bounding box based line break because of lookup overhead. Thus
instroduce wrapper class that has both layout piece and bounds.

- Add new interface that perform line breaks with bounding box.
- Update Greedy/Optimal line breaker to have bounding box based line
  break.

The previous CL was reverted due to performance regression but
it turned out that the performance regression was because of
wrong test setup. (I42e485b77aa7edf3e212e858c34b2ae13b8c3e88)

Bug: 63938206
Test: minikin_tests
Test: atest CtsTextTestCases
Test: atest CtsGraphicsTestCases
Change-Id: I10b5e8dcc7753a524558f1939b16d81357988d1f
33 files changed