Clean up timer code in production queue.
- Use an interval instead of requesting a timeout every timeout.
- Integrate the lateness-parameter.
- Some other cleanup.
- Don't create objects for null values in messages.
- Don't create this.timer on init.
Based on a patch by: @Polakrity
Differential revision: D1906
Comments by: @Angen, @Stan