GN: refactor third_party/gni

  This fixes the build on Linux (dep on third_party:zlib -> third_party/zlib).

  I've moved declare_args() {} back to each .gn file... seems like args want
  to be as local as possible in GN land.

  Additionally, refactor all the common third_party config and warning flag
  changes into a template, third_party.  This lets it all live together in a
  .gni: at head unwanted_configs can be in a .gni (it's just a variable) but
  config("no_warnings") (and thus third_party_configs) cannot, as configs
  cannot be part of .gni files.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2163653002

Review-Url: https://codereview.chromium.org/2163653002
diff --git a/third_party/zlib/BUILD.gn b/third_party/zlib/BUILD.gn
index 0fff083..6338dba 100644
--- a/third_party/zlib/BUILD.gn
+++ b/third_party/zlib/BUILD.gn
@@ -3,16 +3,16 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
+declare_args() {
+}
+
 import("../third_party.gni")
 
 config("zlib_public") {
   include_dirs = [ "../externals/zlib" ]
 }
-source_set("zlib") {
+third_party("zlib") {
   public_configs = [ ":zlib_public" ]
-  configs -= unwanted_configs
-
-  cflags = [ "-w" ]
 
   sources = [
     "../externals/zlib/adler32.c",