[WIP] Refactor profiling code

This is a prototype of a refactor for making the profiling more(at all) extensible. Basically everything is now in a profiler class that knows how to do it's profile, accumulate stats and dump them however we need to. An example of how this would be used is here Shopify/starscream#2235

@Shopify/data-engineers 
I changed it up so that I could add a bit of state to the profiler rather than shoving it into the accumulator.