glw: Wrap to other end when navigating

Fixes #576
Revert "glw: Wrap to other end when navigating"

This reverts commit ba1c68952b0d8c15645765447d6db2e7e344abf4.
Linux: Use the GtkWebkit library
Heavy rework around how UI is started.

On linux we now allow the user to switch between the GLW and GTK UI
using the F12 key.
Add support for web popups on Linux.

Also include an example that auths against TMDB using a web browser popup
osx: Fix broken build
glw: Wrap to other end when navigating

Fixes #576
Add support for .sub (MicroDVD) subtitle format

Fixes #1518
Drop support for serial devices (LGTV remote control)
Remove old audio framework
Rewrite settings API

This gets rid of the insane list of arguments passed to
settings_create_*() functions. Instead we rely on a vararg
function called setting_create() that can do a lot of things
kvstore: Add a deferred list so we can write stuff to kvstore and avoid
getting a lot of sequential writes to the same key.

Will be useful when we bind settings to use kvstore as storage
Remember set video/audio/subtitles playback settings for each video.
Add missing mutex lock
Allow settings to be enabled/disabled
Add per-video volume adjustment
Clean up HTTP API (use varargs instead of insane arglist)
Fix incorrect opcode for PING in websocket server
Rework Showtime's HTTP client

Add some infrastructure to support streaming of content back to
the caller, will make it possible to download content to a file, etc.

We also reduce memory consumption during compressed transfers
fileaccess/fs: Add write support to files

Also add makedirs() and fa_copy() for copying files in
virtual file system