Crouton in a tab

Still a few issues to iron up, more testing, and a few missing features, but the general idea is there.

Known issues:
 - The extension does not start with focus (you need to click)
 - Touch events
 - IME events
 - Caps lock is not synchronized (https://github.com/dnschneid/crouton/pull/1144#discussion_r19914500)
 - "Error target STRING not available" sometimes appears during switch (croutonclip/cycle?)
 - Waiting for extension to connect before starting WM is potentially racy (the setres 1024 768 trick to provide xfce with a reasonable DPI fails as the extension starts too soon)... (actually, this is more of a xorg+dummy bug: we could get rid of that if dummy supported xrandr 1.2)
 - On stable channel (`6158.70.0`), the extension/Chrome sometimes crashes on disconnect (fairly frequently): clearly a Chrome bug. Never seen that problem on canary.

Review entries pending:
 - Logging: https://github.com/dnschneid/crouton/pull/1144#discussion_r19862772
 - Super_L: https://github.com/dnschneid/crouton/pull/1144#discussion_r19866490

Fixed:
 - Window title should correspond to chroot name
 - A leftover FIXME in the code, we should force croutoncycle instead of removing files
 - Errors when loading NaCl module are not reported
 - Limit number of resolution changes when resizing (it's slow because we send far too many "R" requests)
 - Move the websocket functions into a common file
I believe it's fine:
https://developer.chrome.com/native-client/pepper_dev/cpp/classpp_1_1_var_array_buffer#aa933ee36d23a31ae35acacbb10069a6b
The 2 variables `receive_var_` and `array_buffer` point to the same internal `ArrayBuffer`, so the pointer should stay valid.

AsString() calls a string constructor, which makes a copy of the string. So the pointer is not valid anymore.