reworked nice_delay interrupt system and fixed some old issues:
- added set_state_deferred(), to avoid timing issues when changing state in loop() (fixes bug where first button press after version check was sometimes ignored, and similar issue after battcheck in simple UI)
- reduced chance of eating first button press after simple UI's battcheck, because it spent an extra second waiting after finishing the readout, and it wasn't intuitive for a single click to go from "post-battcheck darkness" to "off" during that period
- made interrupt_nice_delays() happen every time the state changes, instead of having nice_delay() explicitly check for state changes while it waits... (because the explicit check was buggy and used more ROM)
- made nice_delay_ms() abort immediately when interrupt is set, instead of waiting 1ms before it even checks for the interrupt condition... this makes aborted animations end a lot faster, with less visible flickering
- made blink_num() smaller and simpler, because changes listed above make it possible
- slightly changed order of events in main(), to accommodate for changes above
- fixed issue where battcheck would keep trying to blink out numbers while the user was holding 10H for voltage config mode