SI: Clean up controller-like devices with subclassing

This takes the giant mess of controller-like devices (dance mat and
steering wheel) down to something more manageable, similar to how
the Donkey Konga bongo controller works.

Based-on-a-patch-by: comex <comexk@gmail.com>
ControllerInterface: Remove unused "force" parameter

I'm not sure when this nonsense of forcing locking the mutex when it's
already taken should have ever taken effect, but let's be thankful it
isn't now. That was a badly worded sentence.
DInput: Remove the unsupported Lights output

The LEDs feature doesn't actually do anything: the SetState method is
entirely commented out.
ControllerInterface: Implement dummy UpdateInput / UpdateOutputs

Make the implementation here a bit easier.
ControllerInterface: Remove unused ClearInputState
ControllerInterface: Make UpdateInput / UpdateOutput return void

The return values here have never been checked, so it doesn't make sense
to return a value to begin with.
GCPad: Clean up Motor/Rumble interfaces

Remove the duplication here and just have one Rumble interface that
takes a single strength parameter.
SDL: Apply updates immediately rather than going through UpdateOutput

We're going to remove UpdateOutput as it's redundant, and horribly
complicates the code.
XInput: Apply immediately as well
ForceFeedback: Apply immediately as well
HW: Remove UpdateOutput

All of the rumble interfaces are now immediate mode.
HW: Poll system input from system timers

Rather than playing terrible hacks to determine the start of input
frames, just update system input periodically. Specifically, every
60th of a second.