Debounce buttons in hardware, use interrupts

Move to a hardware based debouncing, simplifying the button handling code. Hook the buttons to interrupts rather than polling so we aren't blocked on things like the victory song.