[joystick] New joystick abstraction - make input handling separate from joystick APIs

This allows for APIs to coexist, such as DirectInput alongside XInput for full 360-like controller support. The current behavior is retained, where the most recent button action across all controllers is repeated at a 0.1s delay.

Analog axes can now imitate buttons, allowing easy GUI navigation. For example: `<axis id="1" limit="+1">Right</axis>`. This has the effect that pushing the analog stick >= 50% right will send a single Right action. After an initial delay (500ms) it will then send more Right actions at a 100ms period until the right stick is moved < 50%. This behavior mirrors keyboard keys.
[joystick] Added XInput joystick support. XBMC now supports all 360-like XInput-compatible controllers out of the box using the Xbox 360 keymap, regardless of controller name.
[joystick] Added Linux Joystick API client to joystick abstraction
[Joystick] implemented Suspend - Resume

LinuxJoystick now ignores the initial events, because they mess up the buttons
Refactor CKeyboardStat so that an event can be translated to a key without calling ProcessKeyDown()
[Confluence] Don't show video progress bar if player has no duration (always stuck at 0:00:00)
[games] Added game info tags to XBMC

XBMC can now load metadata from game images. The following types of game images are currently supported: GBA, GB/GBC. CFileItem::IsGame() can be used to determine if the file item has a game info tag loaded.
[games] fix crash when PVR is used
[python/games] Expose GameInfoTag properties to Python list items.
Refactor service starting/stopping using a callback-based interface when enabling/disabling add-ons in the add-on database
[game clients] Added new Game Client add-ons based on the libretro API.
[game clients] Add rewind functionality to GameClient.
[game clients] Refactor game client serialization into its own class.
[game clients] Refactor game client serialization into its own class.
[JSON-RPC] Add xbmc.gameclient as a valid add-on type.
[game clients] Add win32 and linux repositories for game client add-ons
[AE] Add AESTREAM_LOW_LATENCY to AEStreamOptions for enabling a low-latency "gaming mode"
[retroplayer] Added RetroPlayer, a new player core that enables game clients to play video and audio.

Thanks to ChrisMyhre for catching a compile error.
[retroplayer] Audio: Fixed delay on ALSA devices, and disabled audio delay setting in game settings.
[retroplayer] Added RGB565 support.