[LayoutNG] Support 'avoid' for break-before and break-after.

This adds layout engine support for break avoidance between block
children, if the LayoutNGBlockFragmentation feature is enabled. This
feature is still not shipping, and it is also worth noting that fragment
painting needs some work before we can paint and hit-test this properly
(which is a general issue for LayoutNGBlockFragmentation, not break
avoidance in particular).

The solution is built on top of NGEarlyBreak, which can set up possible
breakpoints before and inside blocks. Another important change is the
introduction of "break appeal", i.e. how attractive a possible
breakpoint is. Previously this was a binary thing; the break was either
considered good or last-resort. Now we set appeal, which will decrease
by rule violation severity.

Bug: 223068, 829028
Change-Id: I7bb19028821eaf380c70c7bd92b3338f47124dd3
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1831804
Commit-Queue: Morten Stenshorne <mstensho@chromium.org>
Reviewed-by: Emil A Eklund <eae@chromium.org>
Reviewed-by: Ian Kilpatrick <ikilpatrick@chromium.org>
Cr-Commit-Position: refs/heads/master@{#702108}
29 files changed