Moving mutex down to smallest possible scope.  Prior placement was too high up the thread chain resulting in less optimal thread utilization
Changing how execution occurs depending on inclusion of the --parallel-test parameter based on feedback in Pull Request #1527

This reverts back to the standard execution methods for non-parallel execution and then uses custom methods when the --parallel-test argument is used to allow for late binding of the require 'thread' call