This adds support for a performance measurement and plotting framework. The performance measurement is mostly done through the inclusion of src/enzo/EnzoTiming.h. Plotting/analysis is added through src/performance_tools/performance_tools.py. Documentation is in src/performance_tools/README.
Added bugfix for when MPI is not used. Could someone please comment on why ReturnWallTime.C would return 0.0 for use-mpi-false? I have updated for the time being to use time.h.
There are several instances of duplicated calls to LCAPERF_START and TIMER_START, etc. Would it be a pain to flatten those, either with a macro or an aggregate function ALLPERF_START, or some function pointer juggling action? This would ease code readability and stem the production of code entropy.
Thanks for the feedback! The main reason that I would be opposed to this is that while LCAPERF_START is used in many of functions in enzo, TIMER_START and this performance framework in general was created to focus on a smaller subset of big routines like hydro, gravity, rebuild, etc.