Merge pull request #3391 from jmarshallnz/faster_getsongs

Speedup for opening music song library
URIUtils::AddSlashAtEnd: remove CStdString
URIUtils: remove CStdString from HasSlashAtEnd and RemoveSlashAtEnd
AliasShortcutUtils: remove CStdString
Merge pull request #3402 from Memphiz/cdiobump

[depends/libcdio] - bump to 0.90 again (was lost during unified deps)
jni: refactor jholder class to be much smarter with copies

This is effectively a rewrite, so unfortunately cosmetics are mixed in as well.
Since it no longer matches upstream at all, it takes on our cosmetics.

See jutils/jutils.hpp for documentation.

This fixes many subtle bugs in our jni usage, mainly involving copying objects
around.
jni: be explicit about what we're doing here
jni: explicitly create an element of the abstract type

Don't count on emplace to do what we want.
jni: no need to release() anymore
Merge pull request #3371 from theuni/android-jholder-rewrite

Android jholder rewrite
Merge pull request #3407 from FernetMenta/cuefile

paplayer: another fix for cuefiles
Revert "[depends/libcdio] - bump to 0.90 again (was lost during unified deps)"

This reverts commit 64109e85405126af1eacde878cb324a3fcc949f4.

- was already taken care of in the libcdio-gplv3 subdir
Merge pull request #3393 from ronie/confluence-labels

[Confluence] get rid of SCRIPTXXX labels
droid: temp fix runtime crash on load, disable gmp
Cannot load library: soinfo_relocate(linker.cpp:975):
cannot locate symbol "__gmp_binvert_limb_table" referenced by "libavformat-54-arm.so"...
libass: bump libass to 0.10.1
fixup, borked fix
jsonrpc: fix JSON schema for Favourite.Details.Favourite
Added initial support for displaying on Wayland compositors.

SDL and X11 builds are disabled when using the --enable-wayland
switch.

EGLNativeTypeWayland is an implementation of EGLNativeType which
connects to a running wayland compositor if possible and starts
rendering in a new surface.

WinEventsWayland polls the wayland display for new events and updates
the main surface.

The wayland client libraries are loaded dynamically and their functions
should not be used directly. Instead, IDllWaylandClient should be injected
into any objects that need to call functions in those libraries. Because
the autogenerated protocol functions are inline in the header files
and not available to be looked up, the protocol needs to be used directly.

Some of the helpers there are:

 1. wayland::protocol::CreateWaylandObject -> creates a wl_proxy casted
    to the result type with a specific wl_interface as looked up in
    the client library.
 2. wayland::protocol::CallMethodOnWaylandObject -> calls wl_proxy_marshal
    with on the proxy with the specified opcode and arguments
 3. wayland::protocol::AddListenerOnWaylandObject -> adds a wl_listener
    to the wl_proxy
 4. wayland::protocol::DestroyWaylandObject -> calls wl_proxy_destroy
    on the proxy.

There may be some cases where additional constructor or destructor functions
might need to be called before or after CreateWaylandObject and
DestroyWaylandObject. Developers should consult the autogenerated
wayland-*-protocol.h headers to determine the expected call order.

XBMCSurface and XBMCConnection wrap most of the wayland connection
and surface creation / destruction and provide outputs for getting
the current resolution and EGL surface.

There is currently no support for keyboard input, mouse input or
multiple monitors.
Added support for multiple outputs and go fullscreen by default.

Created new object xbmc::wayland::Output to wrap wl_output. Gather
all the available modes and report thoses in ProbeResolutions. Resize
the window in SetNativeResolution and set a new opaque region for it.

Remove all outputs on DestroyNativeDisplay()
Added basic input framework.

Added xw::Seat to wrap wl_seat and WaylandInput to be the central
control object for keyboard and mouse input.

EventListener is a pure virtual class that WaylandInput delegates
to. EventDispatch implements EventListener and forwards input
and focus events on to XBMC.

Let WinEventsWayland manage the wl_seat * from EGLNativeTypeWayland
once it appears