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/BUILD b/BUILD
index 3440cca..db8fd99 100644
--- a/BUILD
+++ b/BUILD
@@ -1681,6 +1681,8 @@
         "src/tracing/ipc/memfd.h",
         "src/tracing/ipc/posix_shared_memory.cc",
         "src/tracing/ipc/posix_shared_memory.h",
+        "src/tracing/ipc/shared_memory_windows.cc",
+        "src/tracing/ipc/shared_memory_windows.h",
     ],
 )
 
@@ -1735,6 +1737,7 @@
     name = "src_tracing_platform_impl",
     srcs = [
         "src/tracing/platform_posix.cc",
+        "src/tracing/platform_windows.cc",
     ],
 )