Start adding profiling information

Right now we just have some pure functions for printing (to string) the
profiling info. Not actually recording it yet in the FSMs.
Finish profiling recording and printing