Start cleaning up the input interface

This removes a lot of the ugly details from HW / WiimoteEmu and punts them down lower in the stack. Eventually, long-term, I want to move away from the Background Input model entirely, since asking the display server every frame for new information is quite expensive. I'm quite sure we can come up with a new model that makes things work well for TASers, using only event delivery.
Might be crazy here, but is the indentation here a little wonky, or is it just Github's viewer?