UCM squawks: Support headphone/mic toggle

Add UCM config to toggle playback/record path
at headphone/mic plug/unplug event.

BUG=chrome-os-partner:26108
TEST=Manual test on Squawk. When headphone/mic is
plugged, audio playback/record should switch to it.

Change-Id: I430b2d0aee3a157b70f6f4afd5ccae5b957099a3
Reviewed-on: https://chromium-review.googlesource.com/187976
Reviewed-by: Dylan Reid <dgreid@chromium.org>
Commit-Queue: Hsinyu Chao <hychao@chromium.org>
Tested-by: Hsinyu Chao <hychao@chromium.org>
CRAS: Make shared structures architecture-independent.

This allows x86 clients to connect to x86-64 server, which is
important for crouton.

Get rid of size_t, long, and timespec, whose size depend on the
architecture. The only assumption we make is
sizeof(enum) = sizeof(int) = 4, which is true on x86/x86-64/arm
with GCC (using default compilation flags).

Volume is now an uint32_t (was size_t), capture gain is now an
int32_t (was long): no difference on x86/arm, and 32-bit is more
than enough range on x86-64.

We replace uses of timespec by a fixed-size cras_timespec, where
both fields are 32-bit long (as on x86/arm). All we care about in
CRAS is differences between 2 cras_timespec, so 64-bit fields are
not required (even after year 2038).

TEST=Audio input/output still work.
Add test.