Use tbb thread safe containers to protect plugin system data structures

PluginFactoryBase no longer needs to use a mutex to protect its data structure. This avoids problems where PluginFactoryBase and PluginManager may acquire their locks in different order based on the activity going on.
PluginManager also uses thread-safe containers however the mutex is still used to protect dlopen calls as well as access to loadingLibraryNamed_ value. Using the thread-safe container does mean we no longer have to take a lock if the shared library in question has already been loaded.