Modified Timing service to be thread-safe

The Timing service now records event information per stream and them does a reduction at end job. The service also uses a per thread stack to record module start times to properly handle unscheduled execution and task spawning cases where a module is called on the same thread as another running (but paused) module.
Merge pull request #1245 from Dr15Jones/threadSafeTiming

Multithreaded fixes -- Modified Timing service to be thread-safe