Reland "Use BigBuffer for legacy IPC messages"

This is a reland of 3e126191c1a7a022260c1072b1b9288f09bb2dce,
unchanged.

https://chromium-review.googlesource.com/c/chromium/src/+/1134079
fixes the root cause of the failure which caused this to be
reverted. This CL can land once that one does.

Original change's description:
> Use BigBuffer for legacy IPC messages
>
> This replaces use of ReadOnlyBuffer with a new mojom Message type
> specific to //ipc. This type maps to another new C++ MessageView type
> which in turn wraps a BigBufferView.
>
> This allows us to transparently fall back onto shared memory for large
> IPC messages without increasing the number of copies during send or
> receive in any (small- or large-message) cases.
>
> In order to avoid introducing more mojo-base targets, this also removes
> the remaining [Native] structs from mojo_base mojom (LOGFONT and
> FileInfo) and replaces them with real mojom structures + StructTraits,
> thus allowing //ipc to depend on mojo/public/*/base in its entirety.
>
> Also fixes random missing public_deps entries for a
> chrome/services/file_util typemap, because it decided to start breaking
> all of my local builds. :3
>
> Bug: 784069
> Change-Id: I359b964ffc1fe44ffd6aa704405ea63156f4fbc9
> Reviewed-on: https://chromium-review.googlesource.com/1131685
> Commit-Queue: Ken Rockot <rockot@chromium.org>
> Reviewed-by: Daniel Cheng <dcheng@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#573956}

TBR=dcheng@chromium.org

Bug: 784069
Change-Id: I1224367e9db026cb06b0099ee5dfdada89804f23
Reviewed-on: https://chromium-review.googlesource.com/1134100
Reviewed-by: Ken Rockot <rockot@chromium.org>
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Commit-Queue: Ken Rockot <rockot@chromium.org>
Cr-Commit-Position: refs/heads/master@{#574449}
27 files changed