[LayoutNG] Cleanup visual overflow computations

This patch cleans up visual overflow computations in:
1. Use type-safe geometry classes. NGPhysicalOffsetRect is added.
2. Add conversion functions for LayoutUnit to type-safe geometry
   classes.
3. LocalVisualRect() turned out not to include its children.
   Matched to the definition and separated ContentsVisualRect().
4. Removed NGPhysicalFragment::LocalVisualRect() and its storage.
   NGPhysicalBoxFragment has the storage, but other types are
   assumed to be cheap and compute on the fly.
5. Removed NGPhysicalFragment::UpdateVisualRect(). Box fragments
   computes in NGFragmentBuilder.
6. With that, removed all virtual functions from NGPhysicalFragment.

Bug: 591099
Cq-Include-Trybots: master.tryserver.chromium.linux:linux_layout_tests_layout_ng;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2
Change-Id: Iaa39ad1260e5bd34b430bb3693d914a9e73f8e46
Reviewed-on: https://chromium-review.googlesource.com/691476
Commit-Queue: Koji Ishii <kojii@chromium.org>
Reviewed-by: Emil A Eklund <eae@chromium.org>
Cr-Commit-Position: refs/heads/master@{#508261}
25 files changed