Jesse/async time fix

### CHANGE SUMMARY
* HAD-680
* Fix timeouts in async tests from issue with how tests were being timed

### CHANGE DETAIL
* for sync and async tests, need to time entire cycle at a time, instead of single iteration, because depending on the test, a single iteration can be too short to time, resulting in an elapsed time of 0 and a test that will never finish.
* per iteration setup/teardown is now handled by adding a seperate timer around the setup and teardown blocks, and then subtracting this amount of time from the total
* tests that don't do setup per iteration and use the default setup per cycle or no setup, will be timed in the exact same manner as the original version of benchmark

### TEST IMPACT
* all perf tests now pass
* all benchmark unit tests pass

### DEV IMPACT
* it's no longer possible to write a perf test that is too short to be timed