Reland "Add IPC layer + Platform implementation for Windows"

Reland of aosp/1539396. Fixes WIN32 in platform_windows and
small things that broke since then.

Reason for revert (aosp/1608095): broke chromium win32
https://ci.chromium.org/p/chromium/builders/ci/win32-archive-rel/20608?
https://chromium-review.googlesource.com/c/chromium/src/+/2717017

Original CL description:
The final CL that adds the Windows-specific IPC bits.
This implements the IPC transport as a AF_UNIX socket
and a named shared memory region. AF_UNIX doesn't
bring any major benefits really and I wonder whether
we should just use a TCP socket. In fact, AF_UNIX on
Windows misses the interesting bits of UNIX sockets:
(1) FD-passing is not supported; (2) Peer credentials
are not supported. Given that the shared memory is
based on an unguessable string, we could send that
over TCP as well.

#fixit

Bug: 174454879
Test: manual on Windows, the following works:
Change-Id: Iab7337e625338671873d5dffb169290fcbdd855e
  perfetto_unittests.exe
  perfetto_integrationtests.exe
  traced.exe + perfetto.exe
  stress_test.exe (there is something odd scheduling-wise here but
                   seems unrelated with the IPC port)
diff --git a/gn/standalone/BUILD.gn b/gn/standalone/BUILD.gn
index af70070..31941ed 100644
--- a/gn/standalone/BUILD.gn
+++ b/gn/standalone/BUILD.gn
@@ -161,6 +161,8 @@
     cflags += [
       "/bigobj",  # Some of our files are bigger than the regular limits.
       "/Gy",  # Enable function-level linking.
+      "/FS",  # Preserve previous PDB behavior.
+      "/utf-8",  # Assume UTF-8 by default to avoid code page dependencies.
     ]
     defines += [
       "_CRT_NONSTDC_NO_WARNINGS",