Implement OzonePlatform

This provides a way to select an ozone implementation to use at build time.
It replaces the previous ad-hoc requirement to inject implementations of
ozone interfaces somewhere during initialization, such as by overriding
ContentMainDelegate::PreSandboxStartup(). That requirement made it
difficult for external ozone implementations to build internal targets such
as content_shell because those targets do not initialize the external ozone
implementation without additional patching. Enabling external ports of
chromium is one of the main goals of ozone.

The OzonePlatform code is located at ui/ozone and depends on code in
ui/gfx and ui/events because it must inject implementations into
those components. The ozone platform is initialized from
ui/aura or ui/gl, as those components need the interfaces provided by ozone
in order to function.

There are two in-tree platforms currently: test (image dump) and dri
(libdrm-based direct rendering). The platform is selected by the setting
ozone_platform gyp variable and defaults to "test".

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

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@232170 0039d316-1c4b-4281-b951-d872f2087c98
Add flag to renable repaint after layout.

This flag allows us to enable the new new repainting after layout code path.

BUG=310398

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

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@232171 0039d316-1c4b-4281-b951-d872f2087c98
SVN changes up to revision 232170
Blink roll 161048:161057

http://build.chromium.org/f/chromium/perf/dashboard/ui/changelog_blink.html?url=/trunk&range=161049:161057&mode=html
TBR=
BUG=

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

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@232172 0039d316-1c4b-4281-b951-d872f2087c98
SVN changes up to revision 232172