[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 
My Java-ness showing through, getters and setters all the way down.