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.
I think the device stuff should definitely be separate.. because as we've discussed, we need to break the tight coupling of the devices from the avatar, so that the devices are queryable independent of how the avatar has responded to those device movements. Although I know this particular code has no impact on that decision, I think keeping them separate here will help reinforce that concept.