Joystick Support

Try number 2!
So I rewrote it from scratch, because I was a really bad coder when I first started.
However, if anyone could tell me how to have the axis controls start at to .5, as opposed to 0, would be a godsend. I tried in a couple places to no effect, and it results in the camera going absolutely nuts when you first start. This is the only issue I can find presently.
Scrawl asked, last time I did this, to change A_MoveLeft/A_MoveRight to use increasing and decreasing controls, however as nothing else does this I did not know how to do this, nor do I see the benefit.
Hopefully everything works correctly! I have touched openMW nor C++ in forever so I'm rather rusty.
I'm not sure if removing deviceId is a good idea. The original intent was that you could use multiple controllers at a time, e.g. for a split-screen setup with multiple local players. Even if that is not used by OpenMW, since we are using OICS as a self-contained library (which may used by other projects too) there is no reason to remove the feature.
If it is causing trouble in some way, e.g. IDs not remaining the same after plug-and-play, perhaps introduce a "-1" value for the deviceId that basically means "don't care"?