Fix custom baudrates on Linux and support more on OS X.
Fix custom baudrates on Linux and support more on OS X.

My recent change to move from using struct termios to struct termios2
when setting a custom baud rate ended up breaking it in some cases
because the call to tcsetattr would override the changes committed by
TCSETS2. This change switches all configuration to struct termios2 when
compiling for Linux.

On OS X it was discovered that more exotic baud rates like 2,000,000 bps
don't work with the existing cfsetispeed/cfsetospeed method so the OS X-
specific IOSSIOSPEED ioctl is used instead.

BUG=422165, 513071

Review URL: https://codereview.chromium.org/1252863002

Cr-Commit-Position: 972c6d2dc6dd5efdad1377c0d224e03eb8f276f7@{#340314}

CapOM/ChromiumGStreamerBackend,lihui7115/ChromiumGStreamerBackend,ltilve/ChromiumGStreamerBackend,ltilve/ChromiumGStreamerBackend,CapOM/ChromiumGStreamerBackend,CapOM/ChromiumGStreamerBackend,ltilve/ChromiumGStreamerBackend,CapOM/ChromiumGStreamerBackend,ltilve/ChromiumGStreamerBackend,lihui7115/ChromiumGStreamerBackend,lihui7115/ChromiumGStreamerBackend,ltilve/ChromiumGStreamerBackend,lihui7115/ChromiumGStreamerBackend,lihui7115/ChromiumGStreamerBackend,CapOM/ChromiumGStreamerBackend,ltilve/ChromiumGStreamerBackend,CapOM/ChromiumGStreamerBackend,lihui7115/ChromiumGStreamerBackend,lihui7115/ChromiumGStreamerBackend,ltilve/ChromiumGStreamerBackend,CapOM/ChromiumGStreamerBackend,CapOM/ChromiumGStreamerBackend,ltilve/ChromiumGStreamerBackend,lihui7115/ChromiumGStreamerBackend,CapOM/ChromiumGStreamerBackend,ltilve/ChromiumGStreamerBackend,lihui7115/ChromiumGStreamerBackend