Merge pull request #2263 from RosettaCommons/roccomoretti/tracer_threaded_init_fiasco
Attempt to fix static initialization order fiasco in threaded basic::Tracer
Seth Cooper pointed out on the FoldIt mailing list that there's a potential static initialization order fiasco issue with tracer_static_data_mutex -- It's used by the constructors of static objects (Tracers) in different translation units, and it isn't well defined by the C++ standard if the mutex will be valid when the Tracer constructor runs.
It's a simple enough fix to convert this to a construct-on-first-use style access, which should solve the fiasco in a threadsafe manner for C++11.