Convert TimedSpawnerComponent to use an Update loop

TimedSpawnerComponent.IntervalSeconds is now a TimeSpan instead of an int. Thanks to the way TimeSpans are serialized, this requires no YAML changes, but code that uses it will need to be adjusted.