Changes in DisplayItemClient for spv2 paint invalidation

1. Save PaintInvalidationReason into the m_cacheGeneration field.
   This is for SPv2 rect-based paint invalidation after
   PaintController commit. See https://docs.google.com/document/d/1M669yu7nsF9Wrkm7nQFi3Pp2r-QmCMqm4K7fPPo-doA/edit#
   for details.

2. Let it implement cache control directly to avoid the macros.
   Used the macros to keep the class a pure interface to avoid
   multiple inheritance of non-interfaces. However, with
   DisplayItemClient being a non-interface, there is only
   one real multiple inheritance (Scrollbar from Widget and
   DisplayItemClient) which looks no harm.

BUG=510908

Review-Url: https://codereview.chromium.org/2095013003
Cr-Commit-Position: refs/heads/master@{#402384}
18 files changed