stream_bluray: implement navigation interface for Blu-ray stream

This commit introduces new stream protocols: bdnav(and others).
bdnav stream shares lots of codes with original bluray stream, so
it's not separated in different source file.

Major difference from bluray is that bdnav does not support longest
title because there is no way to query that information.
bdnav://menu and bdnav://first correspond to top menu title and
first play title respectively, though they often point same title.

Also, binary position based seeking has been removed, because it
didn't have no point.
stream_bluray: use more proper error code for stream control

Use STREAM_OK instead of hardcoded value 1.
Handle failure of setting title as an unsupported behaviour rather
than an error.
stream_bluray: select initial angle only if peeking title succeeded

The angles should be set and queried only if a valid title is
selected. Also, in navigation mode, there are some limitations
which make it impossible to query current title/angle.
stream_bluray: cosmetic refactoring

Remove unused variables. Declare variables when they are needed.
Adjust brackets for mpv's convention. Clean up too many empty lines.
player: rename dvdnav to discnav

Now, navigation works both of DVD and non-BD-J Blu-ray. Therefore,
rename all 'dvdnav' strings which are not DVD specific to 'discnav'
Merge remote-tracking branch 'mpv/pr/676'
player: dvdnav: fix start time when entering and leaving menu

Unfortunately, quite a hack, because we have check the nav state
outside of discnav.c.
audio: remove sample rate limit checks

This played the file at a wrong sample rate if the rate was out of
certain bounds.

A comment says this was for the sake of libaf/af_resample.c. This
resampler has been long removed. Our current resampler
(libav/swresample) checks supported sample rates on reconfiguration, and
will error out if a sample rate is not supported. And I think that is
the correct behavior.
stream_bluray: check AACS and BD+ protections

There are two kind of encryption for Blu-ray disc, AACS and BD+,
and both of them can be checked through BLURAY_DISC_INFO object.
This commit makes the bluray and bdnav streams refuse playback
if AACS/BD+ is detected and decryption is failed.
stream_bluray: move lookup of AACS error codes into a function

Mostly a cosmetic change. Makes the code a little bit shorter.
ao_wasapi: make code shorter

Also fix a format string mistake in a log call using it.

I wonder if this code shouldn't use FormatMessage, but it looks kind
of involved [1], so: no, thanks.

[1] http://support.microsoft.com/kb/256348/en-us
player: add missing "-" to options in workaround notice on A/V desynchronization

While it technically works, using GNU-style options seems cleaner nowadays.

Signed-off-by: wm4 <wm4@nowhere>
vf_eq: don't malloc priv struct

There wasn't any reason for this. In fact, it's a memory leak. The
proper priv struct is already allocated vf.c and the option parser.
osc: make OSC more responsive when paused

Quick hack to impove situtation until the next major overhaul
comes
m_property: don't parse empty string as 0

Nice strtol() usage error.
command: add helper function to split property paths

We've just checked whether a sub-path started with "name/", but that
changes behavior whether the property name has a trailing '/' or not.
Using a helper function to split of path components avoids this problem.
command: fix access to "metadata/list" property

The function tag_property() in command.c passed a key action with empty
path to m_property_read_list. This is normally not valid, because key
actions are supposed to access sub-paths. But it's kind of inconvenient
to check for this case in tag_property(). So make it valid by providing
a m_property_unkey() function, which turns a key access to "" into a
top-level action.
command: minor simplification
command: change what the metadata property returns

Change the type of the property from a string list (alternating
key/value entries) to a map. Using the client API, this will return
MPV_FORMAT_NODE_MAP, while Lua mp.get_property_native returns a
dictionary-like table.
command: allow changing filters before video chain initialization

Apparently this is more intuitive.

Somewhat tricky, because of the odd state after loading a file but
before initializing the VO.