[Linux] os-release: unescape quotes / backslashes
The os-release specification states that single quotes, double quotes
and backslashes are supposed to be escaped with \. Unfortunately
I missed this in my original commit 7a9aa6f5d9ac8df1c79eb06ed63bce8af162c3ba.

http://www.freedesktop.org/software/systemd/man/os-release.html
Expose ACTION_FOO, ICON_TYPE_FOO and KEY_CODE_FOO to addons
[Fix] Event server code for remote mouse with event client protocol
Added JSONRPC.NotifyAll as a built-in function
Faster sorting of CFileItemLists, step 1

CFileItemLists are sorted by first construcing a SortItems object that refers
back to each CFileItem by index, sorting the SortItems object, then rebuilding
CSortItemList::m_items (a vector of pointers to CFileItems) by examination of
the sorted version of the SortItems object.

It might be more sensible, long-term, to sort m_items directly, but in the
meantime, there are a couple of simple ways to make sorting with SortItems
sufficiently efficient that it's not a problem any more.

Previously, SortItems was a vector of SortItem objects, held by value; each
SortItem was a std::map (implemented as a red-black tree) which ended up
being constructed and destructed as each element of SortItems was moved.
This patch changes SortItems to be a vector of pointers to SortItems instead.

Benchmarks for CFileItemList::Sort() on a Raspberry Pi with a library of
600 movies:
Before patch: 4.6 seconds
After patch:  1.1 seconds
Faster sorting of CFileItemLists, step 2

Each time a CFileItemList is sorted, multiple SortItem objects are
constructed and destructed. Each object is a std::map ,implemented as a
red-black tree with one node for each attribute (Field) upon which the
CFileItemList could conceivably have been sorted, even though for any given
SortBy, very few attributes are actually examined by SortUtils::Sort(). Worse
still, many of those nodes involve creating an associated fresh copy of a
string, with all the associated heap thrashing that entails.

This patch changes the various ToSortable methods to limit the number of
items in each SortItem's std::map to those actually required for performing
the chosen sort.

Benchmarks for CFileItemList::Sort() on a Raspberry Pi with a library of
600 movies:
Before patch: 1.1 seconds
After patch:  0.36 seconds
Fix typo in setup of sort-by-album-artist inherited from previous code
add System.AddonVersion() infolabel
ActiveAE: fix wrong device name after creating audio device
Two extra fields now always inserted when SortItems are initialised

These are FieldSortSpecial (used to force certain items like ".." to the
top or the bottom of the list) and FieldFolder (used to ensure folders are
separated from files). These are required in addition to whatever the
primary sort variable is.

Obviously this will impact the speedup of the rest of the patch, but since
neither are string fields, this should be minimal.
UDevProvider: add support to handle optical disk add/remove storage handling

OpenELEC:~ # udevadm info --query=all --name=/dev/sr1
P: /devices/pci0000:00/0000:00:1c.2/0000:03:00.0/usb6/6-2/6-2:1.0/host4/target4:0:0/4:0:0:0/block/sr1
N: sr1
S: disk/by-id/usb-TSSTcorp_BDDVDW_SE-506BB-0:0
S: disk/by-label/Die\x20letzten\x20Tempelritter
S: disk/by-path/pci-0000:03:00.0-usb-0:2:1.0-scsi-0:0:0:0
E: DEVLINKS=/dev/disk/by-id/usb-TSSTcorp_BDDVDW_SE-506BB-0:0 /dev/disk/by-label/Die\x20letzten\x20Tempelritter /dev/disk/by-path/pci-0000:03:00.0-usb-0:2:1.0-scsi-0:0:0:0
E: DEVNAME=/dev/sr1
E: DEVPATH=/devices/pci0000:00/0000:00:1c.2/0000:03:00.0/usb6/6-2/6-2:1.0/host4/target4:0:0/4:0:0:0/block/sr1
E: DEVTYPE=disk
E: ID_BUS=usb
E: ID_CDROM=1
E: ID_CDROM_BD=1
E: ID_CDROM_BD_R=1
E: ID_CDROM_BD_RE=1
E: ID_CDROM_CD=1
E: ID_CDROM_CD_R=1
E: ID_CDROM_CD_RW=1
E: ID_CDROM_DVD=1
E: ID_CDROM_DVD_PLUS_R=1
E: ID_CDROM_DVD_PLUS_RW=1
E: ID_CDROM_DVD_PLUS_R_DL=1
E: ID_CDROM_DVD_R=1
E: ID_CDROM_DVD_RAM=1
E: ID_CDROM_DVD_RW=1
E: ID_CDROM_MEDIA=1
E: ID_CDROM_MEDIA_BD=1
E: ID_CDROM_MEDIA_SESSION_COUNT=1
E: ID_CDROM_MEDIA_STATE=complete
E: ID_CDROM_MEDIA_TRACK_COUNT=1
E: ID_CDROM_MEDIA_TRACK_COUNT_DATA=1
E: ID_CDROM_MRW=1
E: ID_CDROM_MRW_W=1
E: ID_FOR_SEAT=block-pci-0000_03_00_0-usb-0_2_1_0-scsi-0_0_0_0
E: ID_FS_LABEL=Die_letzten_Tempelritter
E: ID_FS_LABEL_ENC=Die\x20letzten\x20Tempelritter
E: ID_FS_TYPE=udf
E: ID_FS_USAGE=filesystem
E: ID_INSTANCE=0:0
E: ID_MODEL=BDDVDW_SE-506BB
E: ID_MODEL_ENC=BDDVDW\x20SE-506BB\x20
E: ID_MODEL_ID=1956
E: ID_PATH=pci-0000:03:00.0-usb-0:2:1.0-scsi-0:0:0:0
E: ID_PATH_TAG=pci-0000_03_00_0-usb-0_2_1_0-scsi-0_0_0_0
E: ID_REVISION=TS00
E: ID_SERIAL=TSSTcorp_BDDVDW_SE-506BB-0:0
E: ID_TYPE=cd
E: ID_USB_DRIVER=usb-storage
E: ID_USB_INTERFACES=:080250:
E: ID_USB_INTERFACE_NUM=00
E: ID_VENDOR=TSSTcorp
E: ID_VENDOR_ENC=TSSTcorp
E: ID_VENDOR_ID=0e8d
E: MAJOR=11
E: MINOR=1
E: SUBSYSTEM=block
E: TAGS=:seat:systemd:uaccess:
E: USEC_INITIALIZED=79068
show all removable disks mounted under /media not only mounts containing 'usb'
Remove unnecessary StdString.h inclusion.
Refactor CWinEvents

We need the implementations to be instantiated in order to extend the
Observer class.
Remove some unused WinEvents stuff under IOS
Allow WinEvents to observe Peripherals changes
Merge pull request #3367 from FernetMenta/aefixes

ActiveAE: fix opening wrong device after suspend
Merge pull request #3313 from t-nelson/winevents_refactor

CWinEvents refactor and allow CWinEvents to observe Peripherals changes
fixed usb mouse/keyboard detection

Peripheral insertions and removals after boot weren't reflected.
Move lirc init before keyboard

LIRC's devinput driver requires exclusive access, which conflicts with our
evdev input manager. If LIRC is able to grab a device and use it, assume that
we want it to, then evdev can't grab it.