This PR addresses the first (and more common) half of the delay() problem: the mouth animations. Instead of locking the Arduino into for loops using delay(), which kept it occupied for long periods, the animations now update incrementally. This allows them to be interrupted midway, making for much smoother transitions, and when combined with the upcoming (more complicated) eye animation refactoring, will allow the mouth and eyes to animate simultaneously.
This PR addresses the first (and more common) half of the delay() problem: the mouth animations. Instead of locking the Arduino into for loops using delay(), which kept it occupied for long periods, the animations now update incrementally. This allows them to be interrupted midway, making for much smoother transitions, and when combined with the upcoming (more complicated) eye animation refactoring, will allow the mouth and eyes to animate simultaneously.