improved performance stats API

I decided to polish up some work I started last Friday and submit as PR.

The motivation was to make the performance stats accumulate data and tally at the end of the frame rather than treat each elapsed time as its own measurement.  This allows us to add up similar measurements (for example: "avatar/simulate/skeleton") for multiple instances and then display the total stat spent in that context.  In other words: the total time spent for all avatars rather than the average time for each avatar.

While I was making changes I decided to modify how the stat's "name context" is computed.  Each PerformanceTimerRecord instance now automatically accumulates name context from earlier instances which simplifies the API and also makes it possible to accumulate stats across multiple paths.  For example:  /idle/update/doSomething and /init/doSomething.

Finally, I with the new "name context" calculation I noticed that some contexts would be computed only once (specifically during init) and then never be updated again, thereby cluttering the list of stats.  I added a stat expiry to clean up these old measurements.
No.  This was a theoretical optimization.  As far as I can tell none of our PerformanceTimer's are in a tight enough loop for this to be a measurable effect.