change timing method in perfutil to use averaging and include GC time
do a better job of avoiding unnecessary GC roots in codegen

this removes stores and loads, and if we can reduce the number of roots
in a function to zero we save significant overhead.
ref #3440