[LayoutNG] Introduce perfect size caching.

This adds additional logic within blink::MaySkipLayout.

This additional logic precomputes the (pre-layout) NGFragmentGeometry
to determine if the size of a fragment will change from the previous
layout pass (and therefore if we can skip layout all-together).

Bug: 635619
Change-Id: Ic51c466381983379e4f10f330d3c462fa6b3e9d5
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1585069
Commit-Queue: Ian Kilpatrick <ikilpatrick@chromium.org>
Reviewed-by: Christian Biesinger <cbiesinger@chromium.org>
Reviewed-by: Morten Stenshorne <mstensho@chromium.org>
Cr-Commit-Position: refs/heads/master@{#654740}
17 files changed