[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 
Doesn't `_add_profile` take an Accumulator and not a Profiler as it's second param?