Instead of requesting content one ID at a time, queue them up to be requested in one go.
* Avoids sending many small requests.
* Avoids sending requests for content which is likely to be arriving anyway.
IntervalTimer and TimeoutTimer use RAII, and can be used to replace
all the time-based timeouts, lag-detection, "execute every N" we
have.
As it uses RAII, you can safely use it as static variable, class
member, temporary variable, etc. As soon as it goes out-of-scope,
it will be safely removed.
This allows for much easier to read code when it comes to intervals.