Modify ALLOW_UNUSED to allow enabling unused local warnings on MSVC.

This splits the macro into two:

int a = 1;
ALLOW_UNUSED_LOCAL(a);

and

typedef Foo Bar ALLOW_UNUSED_TYPE;
void foo() ALLOW_UNUSED_TYPE;  // ALLOW_UNUSED_TYPE_OR_FUNC seemed too verbose

This matches changes that have already been made in Blink.

BUG=81439
TEST=none
TBR=ben

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

Cr-Commit-Position: refs/heads/master@{#300014}
diff --git a/base/compiler_specific.h b/base/compiler_specific.h
index ba57cc3..6210d1a 100644
--- a/base/compiler_specific.h
+++ b/base/compiler_specific.h
@@ -94,11 +94,17 @@
 // (Typically used to silence a compiler warning when the assignment
 // is important for some other reason.)
 // Use like:
-//   int x ALLOW_UNUSED = ...;
+//   int x = ...;
+//   ALLOW_UNUSED_LOCAL(x);
+#define ALLOW_UNUSED_LOCAL(x) false ? (void)x : (void)0
+
+// Annotate a typedef or function indicating it's ok if it's not used.
+// Use like:
+//   typedef Foo Bar ALLOW_UNUSED_TYPE;
 #if defined(COMPILER_GCC)
-#define ALLOW_UNUSED __attribute__((unused))
+#define ALLOW_UNUSED_TYPE __attribute__((unused))
 #else
-#define ALLOW_UNUSED
+#define ALLOW_UNUSED_TYPE
 #endif
 
 // Annotate a function indicating it should not be inlined.