Reduce invalidation on children-needs-layout containers
    
The concept of this patch is to detect cases where containers
don't need to generate invalidation because they don't need
layout themselves (only need layout because of their children)
and don't have anything that warrant an invalidation (e.g. a
order, an outline, a background, basically anything that would
require the difference in size to be invalidated).
    
This change removes a lot of invalidation in our tests (yay!),
a good chunk is due to not invalidating when body's size
change but there are still some room for improvements.
    
The new test is a variation of table-section-repaint.html
that checks that we correctly handle block flow shifts.
    
BUG=313447

Review URL: https://codereview.chromium.org/204843002

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