[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 
What's the benefit of making this a `@property`?