CRAS: cras_shm: split samples into separate shm

Change the shm shared between client and server so that the
samples area is mapped separately from the header. This will let us
eventually transition to letting clients provide the shm to read
samples from, if they so choose.

The notable changes to the client/server protocol are:
  - change shm_max_size to samples_shm_size in stream_connected
  - append a header and a samples fd to stream_connected instead of
    the same header fd twice

This commit maintains backwards compatibility, and does not change the
rust cras_client. That change will be made in a separate commit.

BUG=chromium:968724
TEST=ASAN unit tests, rust and non-rust client playback test

Change-Id: Ifc022a47d34998d18073a71f67cf0313565ce68f
Reviewed-on: https://chromium-review.googlesource.com/1656635
Tested-by: Fletcher Woodruff <fletcherw@chromium.org>
Commit-Ready: Fletcher Woodruff <fletcherw@chromium.org>
Legacy-Commit-Queue: Commit Bot <commit-bot@chromium.org>
Reviewed-by: Chih-Yang Hsia <paulhsia@chromium.org>
12 files changed