Vulkan: Port renderer to Fuchsia (reland)

Add DisplayVk and WindowSurfaceVk subclasses for Fuchsia to the vulkan
renderer, as well as an implementation of OSWindow that renders
fullscreen for the test suite.

Disallow use of the vulkan loader from third_party as Fuchsia uses a fork
of the loader and has not sent those changes upstream yet.

Add a small wayland-inspired library libfuchsia-egl to provide a type
"struct fuchsia_egl_window" to use as EGLNativeWindowType. This type
combines a zx_handle_t to an image pipe channel and a surface size.

Image pipes can only be used once to create a VkSurfaceKHR. This means we
have to recreate the pipe in tests that call eglCreateWindowSurface more
than once with a single OSWindow, or the second call will fail. Add a
resetNativeWindow() method to accomplish this.

Reland disabling -Wextra-semi.

BUG=angleproject:2475
TEST=angle_end2end_tests on Fuchsia

Change-Id: Ie91715bcd760c6c04d4b8a02a91daa71e32ee30c
Reviewed-on: https://chromium-review.googlesource.com/c/1467603
Commit-Queue: Michael Spang <spang@chromium.org>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
diff --git a/.gitignore b/.gitignore
index b1f9c12..d82234a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -21,18 +21,22 @@
 *.vsp
 *~
 .*.sw*
+.cipd
 .gclient
 .gclient_entries
 /src/tests/third_party/gles_conformance_tests
 /testing
 /third_party/cherry
 /third_party/deqp/src
+/third_party/fuchsia-sdk
 /third_party/gles1_conform
 /third_party/glslang/src
 /third_party/googletest/src
 /third_party/jsoncpp
 /third_party/libpng/src
 /third_party/llvm-build
+/third_party/qemu-linux-x64
+/third_party/qemu-mac-x64
 /third_party/spirv-headers/src
 /third_party/spirv-tools/src
 /third_party/vulkan-headers/src