Split examples, test and utils in their own BUILD.gn

The basic change was to copy-paste targets in the new BUILD.gn files and
fixup paths / add includes. There's a couple more changes that had to be
done at the same time:

 - Multiple files need to know if GLFW is supported so the variable was
moved to dawn_features.gni.
 - The gtest_and_gmock target used to abstract between Dawn's copy of
GTest/GMock is only needed by tests and was moved in src/tests/BUILD.gn.
 - A leftover dawn_end2end_tests target is left in the main BUILD.gn
file that is an exact copy of the on in src/tests/BUILD.gn. This is
because the GN path is hardcoded in Chromium's isolate_map.pyl that also
can't support GN groups. The only way to move a target I could figure
out was to duplicate it temporarily.

Bug: chromium:1064305
Change-Id: I96820e9d6510b8c9b9112c3e6cd8df2413f04287
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/19201
Commit-Queue: Corentin Wallez <cwallez@chromium.org>
Reviewed-by: Austin Eng <enga@chromium.org>
diff --git a/scripts/dawn_features.gni b/scripts/dawn_features.gni
index 37a32a0..9f4da33 100644
--- a/scripts/dawn_features.gni
+++ b/scripts/dawn_features.gni
@@ -78,3 +78,6 @@
   dawn_enable_vulkan_validation_layers =
       dawn_enable_vulkan && ((is_linux && !is_chromeos) || is_win)
 }
+
+dawn_supports_glfw_for_windowing =
+    is_win || (is_linux && !is_chromeos) || is_mac