add StatsRecord so we can measure non-time related items

A few things in particular that may be worth checking before accepting the pull request.

1) In the original implementation timeUnit is not part of equals and hashCode for statsTimer, but I added it.
2) Note that there is now a race condition to watch out for where you might start computing statistics of a StatsRecord derived class before the derived class variables are initialized.  I added a flag to StatsRecord to defer starting execution, and to StatsTimers constructor I explicitly start the computation.   If there's a cleaner solution let me know.