[LayoutNG] Enable fragment caching when BFC block offset changes

This patch enables fragment caching when BFC block offset
changes, as long as 1) either the cached or new doesn't have
floats, and 2) the cached fragment doesn't propagate OOF
objects. The latter may not be needed, but helps to simplify.

Minor but mostly positive improvements are seen in pinpoint:
blink_perf.layout https://pinpoint-dot-chromeperf.appspot.com/job/13a7a7f7e40000
loading.desktop https://pinpoint-dot-chromeperf.appspot.com/job/17a7a7f7e40000

2 block fragmentation tests fail with this change that this
change is not enabled for block fragmentation for now.
* virtual/layout_ng_experimental/fast/multicol/balance-breakafter-before-nested-block.html
* virtual/layout_ng_experimental/fast/multicol/dynamic/spanner-becomes-regular-block.html

Bug: 635619
Change-Id: I46826b45defd556c8dadbf861fb1bbf61c5ae658
Reviewed-on: https://chromium-review.googlesource.com/c/1335072
Commit-Queue: Koji Ishii <kojii@chromium.org>
Reviewed-by: Morten Stenshorne <mstensho@chromium.org>
Reviewed-by: Ian Kilpatrick <ikilpatrick@chromium.org>
Cr-Commit-Position: refs/heads/master@{#608360}
5 files changed