[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. Multiple joysticks are supported. The current behavior is retained, where the most recent action across all controllers is repeated at a 0.1s delay.
[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

TODO: Translate hat axes into true hat structs
Added CButtonTranslator::IsAnalog(int actionID) for testing if an action may be analog
[joystick] Enable analog sticks to 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.