[DispmanX] make it also useable when WEBKIT_TILED_BACKING_STORE or WEBKIT_DIRECT_PAINT are set
[TBS] Never blit invalid tile areas to screen

Only blit the areas of the tile that are still valid when painting to
the screen.

Other than avoiding useless work, this also reduces some annoying
glitches due to blitting to screen invalid contents just to re-render
then after a short while, eg. we no longer "drag" position:fixed
elements when scrolling by overpainting them.
[TBS][FIX] Avoid ASSERT() in ChromeClientGtk::paint()

Exit early from ChromeClientGtk::widgetSizeChanged() it the TBS is
enabled, to avoid incurring in the call to ChromeClientGtk::paint()
from ChromeClientGtk::repaintEverythingSoonTimeout().

This should probably be folded with the original TBS commit:
2a9f03575ad0 [TBS] Enable the Tiled Backing Store on the Raspberry Pi
[DispmanX][FIX] Silence annoying warnings from bcm_host.h

Including bcm_host.h from C++ leads to annoying warnings as
__STDC_VERSION__ is not defined.

The bcm_host.h also complains about __VCCOREVER__, define it to a common
value.

This should probably be folded with the original commit:
3da3c1ece0f3 [DispmanX] Paint video directly into dispmanx plane when fullscreen mode
[TBS][FIX] Don't leak the SOURCE operator setting on GraphicContext

Wrap actions which force the SOURCE cairo operator with calls to save()
and restore() to prevent unexpected consequencies.

This should probably be folded with the original commit:
b393ce6ccdeb [TBS] Use the SOURCE cairo operator where applicable
[DispmanX][FIX] Fix build on !RPI

This should probably be folded with the original commit:
7b20eb40ed4d [DispmanX] make it also useable when WEBKIT_TILED_BACKING_STORE or WEBKIT_DIRECT_PAINT are set
[FIX] Use the specific format identifier for size_t in printf()

This should probably be folded with the original commit:
5d18ff93d6e7 Print memory usage stats on F6
[TBS] Delay tile covering, not contents rendering

Instead of fully freezing contents rendering in the tile backing store
postpone the call to TiledBackingStore::coverWithTilesIfNeeded() after
the timeout has expired.

This should give us the opportunity in the following commits to avoid
painting artifacts when scrolling.
[TBS] Make sure tile contents are valid before blitting them on scroll

Calling TiledBackingStore::updateTileBuffers() forces a re-rendering of
the content areas invalidated by the scroll (eg. areas where
position:fixed elements are involved): this slows down things a bit but
avoids artifacts when painting the tile contents on screen.
[TBS] Keep the tile width in-sync with the widget width

Reduce horizontal tearing in the common case by making sure each tile
horizontally covers a screenful, such that each row is blitted in a
single run.
[TBS] Don't force tiles creation in the allocation handler

Now that we're changing the tile size in response of each widget
allocation change, let the tiled backing store recreate the tiles
asynchronously instead of forcing it on GtkWidget::map and
GtkWidget::size_allocate.

This may cause the checker pattern to be shown while the WebKitWebView
widget is being resized, which is promptly replaced with the re-layouted
contents as soon as the resizing action has finished (ie. when
TiledBackingStore::backingStoreUpdateTimerFired has been fired).
[TBS] Use DeferrableOneShotTimer instead of manually created GSource

This should have no user visible effects but simplifies the code a bit.
[TBS] Use lighter shades of grey for the checker pattern