Rewriting the PWM utility. The new version will use more memory but is taking more of a scheduler/fsm approach with a tick function. I'm hoping this will make intent more clear and harder to misuse.