Reworked button processing

Still exhibits bugs, notably when unpaused. Debounce logic needs work
on either timing and/or to be specific per type of switch.