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 contest this comment -- I can't find this rule in the coding standard.

I added these lines to mark the boundaries between the various class implementations.  This was to alleviate any confusion caused by the violation of Coding Standard item 2.1.2. A (*).  I don't mind occasional violations of that rule when there is a collection of small but heavily related classes in one file.  The visible horizontal line breaks make it easy to sort the collection.

(*) 2.1.2 A class should always be declared in a header file and defined in a source file where the name of the files match the name of the class.