Separate repaint and layout requirements of StyleDifference (Step 3)

Step 1 and 2 replaced StyleDifference enum with StyleDifference class
but still didn't change any functionality.

This change allows multiple types of flags set in StyleDifference, in
the following cases:

1. Both needsRepaint and needsPositionedMovement: This was a full layout
   when StyleDifference enum couldn't express the exact needs of the
   case. Now we can do a repaint and positioned movement without full
   layout.

2. Both needsRepaintLayer and needsFullLayout: Previously, the needs of
   repainting layer must be checked again (about clip, transform,
   opacity etc.) in RenderLayerModelObject::styleWillChange() if layout
   is also needed. Now we can go through the normal needsRepaintLayer
   path.

3. Both needsRepaint and needsFullLayout: Previously as the repaint
   needs couldn't be explicitly expressed, we have to do a full repaint.
   In this change we still keep the original behavior unchanged.
   Will optimize in later changes.

4. Both contextSensitiveProperties and needsLayout: Now this is
   resolved by RenderObject::adjustStyleDifference() to layout only
   or case 1, 2 or 3.

Only case 2 changes the visible behavior. All rebaselined layout tests
are in this case. The extra repaint rects are because now the code
schedules both direct repaints and repaints caused by layer position
change.

BUG=358460
TEST=existing layout tests, several rebaselined.

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

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