base: make base::Optional a shim for std::optional

Now we can use C++17, forward base::optional to std::optional. In a
followup, we can cleanup the codebase to simply use std::optional
directly.

Change-Id: Idec58d95496b44bb609c8628d40747d81e2ab379
diff --git a/gn/standalone/BUILD.gn b/gn/standalone/BUILD.gn
index 1f58eb5..5c7de64 100644
--- a/gn/standalone/BUILD.gn
+++ b/gn/standalone/BUILD.gn
@@ -93,6 +93,12 @@
     # Use after free detection in GCC is still not good enough: it still fails
     # on very obvious false-positives in trace processor.
     cflags_cc += [ "-Wno-use-after-free" ]
+
+    # GCC 7's handling of uninitialized std::optional is flaky at best and
+    # causes many false positives.
+    # TODO(lalitm): remove this when we upgrade to a GCC version which is good
+    # enough to handle this.
+    cflags_cc += [ "-Wno-maybe-uninitialized" ]
   }
 }