Fix all known bugs by making update loop actually a loop.

A future todo should really be to remote the update loop all-together. It just doesn't make sense to have when the rest of the system is event-based. The few components that require incremental timing (like saving trajectory steps) could start their own timers with callbacks.