Added SSL for MySQL connections.
GUIRadioButton: add separate textures for radio image for focus/unfocus states
Use album artist fanart when there is no artist fanart

This is useful especially for albums that are by one main artist but
have some songs featuring other artists, so there may be fanart for "A"
but not "A feat. B".
get rid of SCRIPTXXX labels
Fix infinite loop while viewing "EPG: Timeline" window

With invalid begin/end times, the for loop in GUIEPGContainer.cpp L#825 (https://github.com/xbmc/xbmc/blob/5f33d290e/xbmc/epg/GUIEPGGridContainer.cpp#L825) loops endlessly, freezing XBMC when the user views the "EPG: Timeline" window. Solve this by adding check for invalid end times.
StringUtils: fix TrimLeft and TrimRight functions with UTF-8 strings
At least on Win32 TrimLeft and TrimRight failed with UTF-8 strings. When dereferencing std::string::iterator through not(ptf_fun(isspace())) character converted to int as signed char (isspace declared as "int isspace(int)").
URIUtils::AddSlashAtEnd: remove CStdString
URIUtils: remove CStdString from HasSlashAtEnd and RemoveSlashAtEnd
AliasShortcutUtils: remove CStdString
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
Added support for pointer events and hide the system pointer.

Created classes xbmc::wayland::Pointer to wrap wl_pointer and
xbmc::PointerProcessor implementing xbmc::wayland::PointerListener
which contains the logic for converting wayland button and pointer
events into xbmc events.

Made xbmc::wayland::Seat wait for a pointer to appear and initialize
a pointer in WaylandInput.

Call wl_pointer_set_cursor as soon as the pointer enters our surface
as it is undefined before that.
Listen for a new wl_keyboard from wl_seat_listener and create an
XKBKeymap implementing wayland::Keymap. This class keeps track
of the keyboard state and MUST be updated every time a modifier or
a key is pressed (eg, every time we get an event from the protocol).

KeyboardProcessor implements the logic of converting XKB keysyms to
XBMC keysyms. It also changes the focus state of the window and
delivers key events to the XBMC event subsystem.

TimeoutManager and WaylandEventLoop are just a simple abstraction for
adding timeouts to the poll () / wl_display_dispatch () mainloop, in
place so that we can implement key repeat
Read or dispatch events in a separate thread.

MessagePump() should not be a blocking operation

Because wl_display_read_events was only introduced in wayland 1.2, we need
to support two methods of making MessagePump() nonblocking.

version_11::EventQueueStrategy dispatches the whole event queue and gathers
the resulting XBMC_Events or other messages wrapped up into Action functors
in its reader thread. It then dispatches these to XBMC in the main thread.

version_12::EventQueueStrategy simply reads the wayland connection fd and
then flushes the output buffer and dispatches any read events in the
main thread.

In either version, the wayland listeners may be running in a separate thread.

As such, there is no guaruntee that it is safe to mutate the state of
objects in the xbmc::wayland namespace, at least until
version_11::EventQueueStrategy can be dropped.
XBMCConnection::WaitForSynchronize() should also only be called from
the main thread and not the dispatch thread as it is responsible for
setting synchronized == true