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.
The existing code was like that, and I don't really want to change it in an unrelated commit.