Calculate some gc stats

Putting this in a separate pr because I'm not sure how folks will feel about the bookkeeping, if it's worth it to get the stats.


The first stat is a gauge showing the number of times the garbage collector has run since the last sample.

The second stat records timings for all gcs that have happened since the last sample, accounting for the fact that we may have missed some. Go keeps a circular buffer of the last 256 gc pauses, so if there have been more than 256 pauses in the sample we'll miss some data. Probably not a big deal.