Timing aggregation on the request

**Problem**:

Database queries that take less than a millisecond will be tracked by incrementing the count, but the timing will be 0. Any kind of averaging of this data will be incorrect, the lack of resolution will throw it off.

**Solution**:

Keep track of aggregates on the request, and submit the values once we are done processing the request.

*note: Thanks to @simonw for this idea.*