w32_common: redo keyboard input

Instead of relying on WM_CHAR, convert virtual keys to Unicode manually
with ToUnicode and process all keyboard input with WM_KEYDOWN and
WM_KEYUP. This makes it much easier to send MP_KEY_STATE_UP events to
the core, since it's not easy to relate WM_CHARs with their
corresponding WM_KEYDOWN. WM_CHAR is still handled, but it should only
be used if posted directly to the window or when using an IME.

As a side effect, calling ToUnicode manually gives mpv a lot more
control over how key input is converted to characters. mpv can now bind
commands to dead keys and handle weird shift states that generate
control characters.

This should also have full UTF-16 support for Unicode keyboard layouts,
WM_CHAR and VK_PACKET.
w32_common: support remotes and media keys

Add the virtual key codes for media buttons and handle WM_APPCOMMAND.