ta/README: fix typos
client API: add qthelper.hpp

This provides some helper functions and classes for C++/Qt. As the top
of qthelper.hpp says, this is built on top of the client API, and is a
mere helper provided for convenience.

Maybe this should be a separate library, but on the other hand I don't
see much of a point in that. It's also header-only, but C++ people like
such things. This makes it easier for us, because we don't need to care
about ABI compatibility.

The client API doesn't change, but bump it so that those who are using
this header can declare a proper dependency.
DOCS/client_api_examples: qtexample: stuff

Dump chapters and track list to the log for demo purposes.

Compile in debug mode.
client API: qthelper: fix bugs

Pretty dumb oversights.
DOCS/client_api_examples: qtexample: remove debugging code

Forgotten.
player: fix --frames

This could produce an extra frame, because reaching the maximum merely
signals the playloop to exit, without strictly enforcing the limit.

Fixes #1181.

CC: @mpv-player/stable
client API: allow returning float properties as integers

I'm starting to think that being type-strict with this interface
actually sucks. This commit is a step towards being less strict.
osd: properly redraw external overlays when they are set
stream_lavf: expose concat://

Apparently there's an use for this; see #1178.

I won't redocument obscure FFmpeg features, so add a hint to the
manpage that some protocols are documented in FFmpeg instead.
player: fix OSD cycling

OSD cycling attempted to remove the current message by setting an empty
message with duration 0. Duration 0 tripped up a corner case causing no
OSD to be displayed (until the next message was set), so exclude this
explicitly.
demux_lavf: let libavformat open HLS streams directly

Fixes opening some streams.

This means the HLS playlist will be opened twice, but that's not much of
a problem, considering it's pretty small, and HLS will make many other
http accesses anyway.
demux_lavf: set stream network options if applicable

Normally, we pass libavformat demuxers a wrapped mpv stream. But in some
cases, such as HLS and RTSP, we let libavformat open the stream itself.
In these cases, set typical network properties like useragent according
to the mpv options.

(We still don't set it for the cases where libavformat opens other
streams on its own, e.g. when opening the companion .sub file for .idx
files - not sure if we maybe should always set these options.)
client API: qthelper: remove commented code

This is already taken care of by Q_DISABLE_COPY().
audio/out/push: reset projected EOF time on new data

Seems like this could theoretically happen in low buffer situations, but
I haven't spotted this behavior in the wild.
player: implement IPC support
manpage: add JSON IPC documentation