Joystick API (PR:2370 - xbmc#2370) with the following improvements:

* Fix scrolling being detected as a digital action
* Don't default input.enablejoystick setting to false on linux
* Default SDL joysticks to no - use the linux joystick api instead
* Fix compile warning (possible bug)
* Prefer linux joystick API over SDL joysticks, and some cosmetics
* Enable joystick manager on startup
* Register joystick manager with CPeripherals
Refactor CKeyboardStat so that an event can be translated to a key without calling ProcessKeyDown()
Added game info tags to XBMC. This is mostly a stop-gap implementation until PyRomInfo (https://github.com/garbear/pyrominfo) is included.

Thanks to fetzerch for fixing a PVR-related crash.
Refactor service starting/stopping using a callback-based interface when enabling/disabling add-ons in the add-on database
Make AddonEnabled() callback return a bool (disabled add-on if false is returned) and rename UpdateRemoteAddons() to UpdateExtensions()

Conflicts:
	xbmc/games/GameManager.h

Conflicts:
	xbmc/addons/AddonInstaller.cpp
	xbmc/games/GameManager.cpp
	xbmc/games/GameManager.h
XBMC Game binary add-ons
Libretro support for game add-ons
[game clients] Added new Game Client add-ons based on the libretro API.

Thanks to Themaister for rewind functionality, fetzerch for file length check, and topfs2 for fixing a crash on game client load.
[retroplayer] Added RetroPlayer, a new player core that enables game clients to play video and audio.

Thanks to elpendor for RGB565 support, poisson for RAII improvements and ChrisMyhre for catching a compile error.

Conflicts:
	project/VS2010Express/XBMC.vcxproj.filters
[retroplayer] Added keyboard and joystick input handling to RetroPlayer built on the new joystick abstraction layer.
[games] Add new type of add-on, xbmc.addon.game, plugins and scripts that can be run from MyGames window
[games] Add MyGames window to the GUI
[game clients] Add win32 and linux repositories for game client add-ons
[python/games] Expose GameInfoTag properties to Python list items.
Add repository for new ROM Collection Browser with "Game Add-on" support
[python] Allow Python xbmc.Addon objects to be constructed from uninstalled add-ons.

Only getAddonInfo() is available to uninstalled add-on objects. Attempting to get/set settings or location strings will have no effect.
[python] xbmc.Addon.getAddonInfo() can return "extensions" and "platforms" properties for game client add-ons
[JSON-RPC] New parameter for Addons.GetAddons, "uninstalled", to get add-on info from remote repos.

Example: Addon.GetAddons({"method": "Addons.GetAddons", "params": {"type": "xbmc.addon.video", "enabled": "uninstalled"}})
RetroPlayer work-in-progress

Rename Game API function AllowVFS() to SupportsVFS(), and remove unused RequireArchive()

Conflicts:
	project/VS2010Express/XBMC.vcxproj.filters

[library.xbmc.libretro] always call Get*() functions

Make game callbacks returning strings return char* that need to be freed with FreeString()

Also fix pixel_format callback returning void instead of bool

Some work in GameClient.h

General game clients cleanup

Remove EnvironmentSetPerformanceLevel() Game API callback (replaced RETRO_ENVIRONMENT_SET_PERFORMANCE_LEVEL)

Make EnvironmentSetSupportNoGame() a Game API call instead of a callback

Also fixes typo with EnvironmentSetPixelFormat()

Return strings of static duration

"Finished" cleaning up GameClient

Removed GameFileLoader.cpp and merged functionality into GameClient.cpp

Compiler fixes

More compile fixes (it compiles now!)

Implement EnvironmentGetSystemDirectory() callback

Move variable environment commands to libretro add-on

Remove EnvironmentGetLibretroPath() callback and implement in libretro library add-on

Also fixes copy/paste errors in LibretroEnvironment.cpp

Removed all directory callbacks from the game api

Also, fix bug in LibretroDLL.cpp (parameter needs T& type instead of T)

Implement content directory and save directory

Remove InputPoll() callback and finish AddonCallbacksGame.cpp

Two new functions are added to RetroPlayer.h

Use library.xbmc.libretro add-on to load libretro v1 clients

If libretro client supports loading via memory, use XBMC's VFS

Renamed xbmc.libretro to xbmc.game

Fixed: Use game api import version instead of game client version

Fixed 2 Makefiles and changed include of <string.h> to string because it
did not compile on linux

Much refactoring. Notably, game extension updates have been taken out of repository update job and moved to an Observer callback

Add addon.xml file for library.xbmc.libretro add-on

GameClientProperties fixes: translate special:// paths, and assign properties to the correct variables

Fully remove EnvironmentSetMessage() callback

Also, ACTUALLY fix bug in LibretroDLL.cpp (parameter needs T& type instead of T)

Fix typo in libXBMC_game.cpp

Fix failed assert when disabling add-ons in CGameManager::RegisterAddon()

Fixed: Report parent path of game client library for content directory

silence compiler warning

Disabled unregistering CGameManager from CAddonInstaller. TODO: Figure out why this crashed

Added check for library.xbmc.libretro game clients

Allow CAddonDatabase::GetAddons() to specify add-on type

Fix GameManager.cpp (see parent commit)

cosmetic: Typo in xbmc_game_callbacks.h

Fixed local game clients (not found in remote repositories) not registering their valid extensions properly

Restore commented code (mostly), simplify logic, and fix bug where original name was used as a key instead of the proper label

Solved the case of the missing extensions

squashme

Add new CGameManager::GetAllGameClients() and use CAddonMgr instead of direct database access

Moved initialization list into CGameClient::Initialize() helper function

squashme

Fix bug with return value of CGameClient::Create()

Bug still exists in GameManager.cpp, this will be fixed in a later commit

Re-arrange locking in GameManager.cpp, fix bug (see parent commit), uncomment some code

Implement CGameClient::CanOpen()

Fix bug where game clients weren't being registered

Improve loading through VFS. Fixes bug where entire buffer was copied into data vector instead of just bytes read

fixed compilation error for gcc

library.xbmc.libretro: Refactor game info loading into new file, GameInfoLoader.cpp

Add Game API headers to list of exported headers

Fixed libretro cores failing if library.xbmc.libretro was disabled

Bug fixes:

* Stack overflow exception when trying to allocate 1MB on the stack
* buffer wasn't resized properly when calling LoadGame()

Fix libretro callbacks were never installed (or even fully implemented)

[cosmetic] Remove trailing whitespace from all retroplayer files

Fix compile of library.xbmc.libretro on OSX

Make AddonEnabled() callback return a bool (disabled add-on if false is returned) and rename UpdateRemoteAddons() to UpdateExtensions()

Conflicts:
	xbmc/games/GameManager.h

Conflicts:
	xbmc/addons/AddonInstaller.cpp

Conflicts:
	project/VS2010Express/XBMC.vcxproj.filters
Update copyright headers