adding app-level and block-level profiling.

Create a json script to set test params. Tests are Python scripts with a finite run time.

Results include total time to execute run, sum of all block's time spent in work, and a break-out of each block and their total work time.

plot_results.py does a simple bar graph of the total times. Clicking on a test's results pops up a new figure to show each block.