debounce coin input separately

This commit adds a preference, DebounceCoinInput, which defaults to true.  If set to false, debouncing is not applied to coin input.

There was a question about the CheckButtonChange() function being called 500+ times per second; that doesn't seem to be the case (I tested with various traces).  Additionally, the outer if statement was written to short-circuit as efficiently as possible.