Merge pull request #2668 from RosettaCommons/roccomoretti/first_use_tracer_2
Change how we do `thread_local` tracers
Having a large number of static thread_local Tracer objects causes issues with stack usage with multithreading. This PR separates the static portion of Tracers from the main, thread_local, part (now called TracerImpl), and adds a behind-the-scenes construct-on-first-use linkage between the two.
**What does this mean for the average Rosetta Developer?** Not much. I attempted to make this invisible to normal Tracer use. The only change for most people is now you need to omit the THREAD_LOCAL from the Tracer definition. (You'll likely you'll get a compiler error if you forget, and there's also an integration test to check.)