CRAS: Make shared structures architecture-independent.

This allows x86 clients to connect to x86-64 server: mainly useful
for crouton as users want to play sound from x86 binaries running
in their x86-64 chroots.

In all structures that are shared between the server and client
(via shm, or messages), we get rid of size_t, long, and timespec,
whose size depend on the architecture. We also pack all structures
to make sure alignment is the same across platforms.

We replace size_t by uint32_t, and long by int32_t: no change on
x86/arm, and 32-bit range is more than enough on x86-64.

We assume that sizeof(enum) = sizeof(int) = 4, which is true on
x86/x86-64/arm with GCC (using default compilation flags).

We replace timespec by a fixed-size cras_timespec, where both fields
are 64-bit signed integers (as on x86-64, x86/arm uses 32-bit ints).
This will cause problems when x86 client connects on x86-64 server,
after year 2038 (could be fixed by a simple bit masking).

Finally, the interface in cras_client.h is kept unchanged to maintain
binary compatible with chromium. Some structures are used both in
cras_client.h and shared structures, and therefore may cause problems
if they are converted to fixed-size.

The following are not used by chromium, and therefore can be safely
converted:
 - struct cras_iodev_info/cras_ionode_info: Passed by pointer to
   cras_client_get_{intput/output}_devices.
 - struct cras_attached_client_info: cras_client_get_attached_clients

On the other hand, struct cras_audio_format, passed as parameter to
cras_client_stream_{stream/unified}_params_create and
cras_client_format_bytes_per_frame, are used by chromium, so its
size cannot be changed.
To work around that, a second structure, cras_audio_format_packed
is used in shared structures, and converted back and forth as
required.

BUG=chromium:309961
TEST=Audio input/output still works (e.g. try a Hangout session)
TEST=In crosh, developer mode: 'cd; arecord -f dat -d 5 > x; aplay x'
     records 5 seconds of audio, then plays it back.

Change-Id: I12d851fbbdec5fbb222dc156b5e13316f6c91e30
CRAS test: Verify sizes of shared structures.

This makes sure that shared structures have a fixed size across
architectures.

This test also acts as a reminder that CRAS_SERVER_STATE_VERSION
and CRAS_PROTO_VER should be bumped whenever shared structures and
message format changes.

BUG=chromium:309961
TEST=cros_workon_make --board=${BOARD} media-sound/adhd --test
     on x86 and x86_64.
CQ-DEPEND=CL:189204

Change-Id: Ie9872c8ac9cb6df531c2c821ecb554ad830d27fb