Adds function profiling utility to be used in conjunction with Breakpoint



Added time_profile which is a method annotation, it is excellent in identifying
the sources of slow components. Just annotate any methods you want to profile
for a test run with time_profile and the output is a neat indented profile
readout for the execution time of the method and the total time the program has
been running.

I added this utility while working on [OOIION-1310](https://jira.oceanobservatories.org/tasks/browse/OOIION-1310)