Move static GL binding initialization to //ui/gl/init.

Static GL binding initialization needs to call out to the Ozone
platform. Move this initialization code from //ui/gl to //ui/gl/init as
part of larger effort to break //ui/gl dep on //ui/ozone. Also move
InitializationDebugGLBindings() and ClearGLBindings() in a similar
fashion as they are closely linked to static initialization.

Unfortunately, dynamic GL binding initialization can't be moved
//ui/gl/init. It would be nice to have all the initialization code in
one target but dynamic GL binding initialization is used by GLContext.

The existing InitializationStaticGLBindings() functions had grown to be
very large for some platforms. Where appropriate the code for each
implementation has been extracted into it's own method to improve
readability.

The PRESUBMIT.py script is modified slightly here. The existing static
GL initialization uses ScopedAllowIO on some platforms. This function is
banned so moving the code triggers presubmit errors. The GPU main thread
can't continue until initialization is finished anyways so moving
blocking code to a different thread isn't helpful. Add new exemptions to
PRESUBMIT.py.

BUG=611142
CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_optional_gpu_tests_rel;tryserver.chromium.mac:mac_optional_gpu_tests_rel;tryserver.chromium.win:win_optional_gpu_tests_rel

Review-Url: https://codereview.chromium.org/2094513002
Cr-Commit-Position: refs/heads/master@{#402259}
30 files changed