vo_opengl: avoid texture arrays for compatibility with Intel low quality crap

Commit a0b43a1 changed textures to an array, because additional
per-texture information was needed and managing this as array is more
elegant. This broke playback on Windows with Intel drivers (window
shows green video, even though subtitles/OSD work correctly). So change
it back to make it work again.

Affected driver: Intel(R) HD Graphics 3000 9.17.10.2932
Merge branch 'master' into low_quality_intel_crap

Conflicts:
	video/out/gl_video_shaders.glsl
	video/out/vo_opengl.c
osxbundle: suggest some ways to correct missing dependencies

Hopefully this can give some more clues to users about what broke if they
find themselves in this situation.
w32_common: prevent display power management

Handling SC_MONITORPOWER doesn't seem to prevent the screen from
dimming. The recommended way to do this in Windows XP and Vista is to
call SetThreadExecutionState with ES_DISPLAY_REQUIRED. Windows 7 also
has the PowerCreateRequest/PowerSetRequest/PowerClearRequest APIs but
they're probably too complicated for this task.
Merge pull request #124 from rossy2401/w32-display-required

Prevent display power management in Windows
input: don't ignore press-only mouse button events

Before this commit, only mouse events with both down and up events
were processed. This caused a regression with ignoring mouse wheel
events in cocoa, because these don't distinguish between up and down.

Regression caused by 5b38a52.
demux_mkv: pass extradata for opus

Fixes playing 5.1 opus audio tracks.
Merge branch 'master' into lua_experiment
input: fix behavior if there are actually key up events

Wayland is the only backend that actually sends per-key key up events
(the X11 one just sends MP_INPUT_RELEASE_ALL for simplicity). Handling
was broken with Wayland, and each key event was interpreted twice, once
on key down and once on key up.

This commit should fix it.
input: require VOs to send key up events, redo input key lookup

Making key up events implicit was sort-of a nice idea, but it's too
tricky and unreliable and makes the key lookup code (interpret_keys())
hard to reason about. See e.g. previous commit for subtle bugs and
issues this caused.

Make key-up events explicit instead. Add key up events to all VOs.
Any time MP_KEY_STATE_DOWN is used, the matching key up event must
use MP_KEY_STATE_UP.

Rewrite the key lookup code. It should be simpler and more robust now.
(Even though the LOC increases, because the new code is less "compact".)
cache: fix per-block metadata memory leak
core: update metadata during playback, allow streams to export metadata

STREAM_CTRL_GET_METADATA will be used to poll for streamcast metadata.
Also add DEMUXER_CTRL_UPDATE_INFO, which could in theory be used by
demux_lavf.c. (Unfortunately, libavformat is too crappy to read metadata
mid-stream for mp3 or ogg, so we don't implement it.)
stream_lavf: request and read streamcast/ICY metadata

Requires recent ffmpeg git, otherwise will do nothing.
command: add some playlist manipulation commands

playlist_remove and playlist_move.
core: remove mp_fifo indirection

For some reason mp_fifo specifically handled double clicks, and other
than that was a pointless wrapper around input.c functionality.

Move the double click handling into input.c, and get rid of mp_fifo. Add
some compatibility wrappers, because so much VO code uses these
functions. Where struct mp_fifo is still used it's just a casted
struct input_ctx.
core: cleanup more mp_fifo leftovers

Now only the OSX and Wayland parts are using this.
wayland: implement MOUSE_LEAVE
wayland: remove mp_fifo
wayland: remove unused members
wayland: fix typo