Only do partial layouts when possible.

This patch changes offsetWidth, offsetHeight, offsetLeft, and offsetTop to only
layout a portion of the render tree, up to the target renderer. Partial layout
leaves the root needing layout so a full layout must happen before painting.

An example of the benefit of this patch is wikipedia where the following
pattern is common:
1) page load
2) javascript calls offsetWidth, forcing a full layout
3) javascript injects style into the page, invalidating layout
4) a full layout is performed for painting

With this patch, the offsetWidth call in #2 is significantly improved.

Text autosizing currently removes most of the benefit of this patch, this will
be addressed in a followup patch. Similarly, non-overlay scrollbars reduce
the benefit from this patch.

This is currently implemented behind the PartialLayout
runtime enabled feature flag.

BUG=283623

Review URL: https://chromiumcodereview.appspot.com/18601002

git-svn-id: svn://svn.chromium.org/blink/trunk@157252 bbb929c8-8fbe-4397-9dbb-9b2b20218538